这是我的bash代码的一部分;
b=`cat 101127_2_aa_1.fastq|head -$a|tail -1|sed 's/\(.\)B*$/\1/g'|wc -c`
d=`cat 101127_2_aa_1.fastq|head -$a|tail -1|wc -c`
if (($b%$d>=0.7))
then
HOwever我遇到了以下问题:
line 13: ((: 26%100>=0.7: syntax error: invalid arithmetic operator (error token is ".7")
问题是什么? THX
编辑: 我的脚本中有两个if循环:
if (($a%4==0))
if (( 10*$b/$d>= 7 ))
似乎第一个,只有“%”工作
对于第二个,只有“/”有效
我很困惑
答案 0 :(得分:4)
除法运算符为/
,而不是%
。
bash也没有花车。解决方法是执行类似
的操作if (( 10 * $b / $d >= 7 ))
或
if (( 10 * $b >= 7 * $d ))
答案 1 :(得分:3)
BASH是一种没有浮点运算的无类型编程语言。但是,您可以使用 bc 工具执行floting-point操作。以下文章很好地解释了如何:http://www.linuxjournal.com/content/floating-point-math-bash。你需要的是float_cond()
函数。
答案 2 :(得分:2)
我会使用awk
。
以下是一些例子。
[jaypal:~] awk 'BEGIN{ print 44/3 }'
14.6667
[jaypal:~] a=55
[jaypal:~] b=4
[jaypal:~] awk 'BEGIN { print '$a'/'$b' }'
13.75
正如 @Amadan 所建议的那样,我们可以在awk
中完全做到这一点 -
a=44
b=5
c=$(awk 'BEGIN { print '$a'/'$b' }')
awk 'BEGIN{if ('$c'>.7) print "yeah"; else print "nope" }'