首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证文件类型完整性并创建日志的bash

验证文件类型完整性并创建日志的bash
EN

Stack Overflow用户
提问于 2016-05-05 18:02:47
回答 1查看 309关注 0票数 0

我试图使用bash来验证特定下载.bam文件的完整性。有两个部分(bash 1)运行命令来验证创建.bam文件的.txt文件和创建process.log文件。这个部分工作得很好,我得到的错误是检查每个.txt文件中的一个字符串(SUCCESS),如果找到它,那么在process.log中,如果没有找到该文件,那么该文件就损坏了。当前,终端显示状态,然后给出一个错误。谢谢:)。

bash第1部分

代码语言:javascript
复制
logfile=/home/cmccabe/Desktop/NGS/API/5-4-2016/process.log
for f in /home/cmccabe/Desktop/NGS/API/5-4-2016/*.bam ; do
 echo "Start bam validation creation: $(date) - File: $f"
 bname=`basename $f`
 pref=${bname%%.bam}
 bam validate --in $f --verbose 2> /home/cmccabe/Desktop/NGS/API/5-4-2016/bam_validation/${pref}_validation.txt
 echo "End bam validation creation: $(date) - File: $f"
done >> "$logfile"
 echo "Start verifying $(date) - File: $file"
 value=$( grep -ic "(SUCCESS)" /home/cmccabe/Desktop/NGS/API/5-4-2016/bam_validation/*.txt )

bash第2部分

代码语言:javascript
复制
 if [ $value -eq 1 ]
 then
 echo "bam file is verified and complete"
 else
 echo "bam is corrupt, check log for reason"
 echo "End bam verify: $(date) - File: $f"
 fi
 done >> "$logfile"

erorr

代码语言:javascript
复制
Start verifying Thu May  5 12:49:10 CDT 2016 - File: 
/home/cmccabe/Desktop/loop.sh: line 11: [: too many arguments
bam is corrupt, check log for reason
End bam verify: Thu May  5 12:49:10 CDT 2016 - File: /home/cmccabe/Desktop/NGS/API/5-4-2016/NA19240.bam
/home/cmccabe/Desktop/loop.sh: line 18: syntax error near unexpected token `done'
/home/cmccabe/Desktop/loop.sh: line 18: `done >> "$logfile"'

为检查是否成功而创建的文件

代码语言:javascript
复制
Number of records read = 24723078
Number of valid records = 24723078

TotalReads(e6)  24.72
MappedReads(e6) 24.57
PairedReads(e6) 0.00
ProperPair(e6)  0.00
DuplicateReads(e6)  7.33
QCFailureReads(e6)  0.00

MappingRate(%)  99.38
PairedReads(%)  0.00
ProperPair(%)   0.00
DupRate(%)  29.66
QCFailRate(%)   0.00

TotalBases(e6)  4332.46
BasesInMappedReads(e6)  4325.68
Returning: 0 (SUCCESS)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-05 18:47:07

错误是由最简单的原因造成的,在bash中,如果您使用一个圆括号[]来计算一个条件,那么它只不过是一种使用bash test表达式将$value扩展为包含空格的字符串的隐式方法,特殊字符作为单独的参数。在这里,您已经使变量不明确,对于某些错误情况,可以将其扩展为多个参数。

您所需要做的就是将该变量括在双引号中,以便将其作为一个字符串处理。

代码语言:javascript
复制
if [ "$value" == 1 ]; then
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37057306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档