0

这是我的 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

但是我遇到了以下问题:

line 13: ((: 26%100>=0.7: syntax error: invalid arithmetic operator (error token is ".7")

有什么问题?谢谢

编辑:我的脚本中有两个 if 循环:

if (($a%4==0))
if (( 10*$b/$d>= 7 ))

似乎是第一个,只有“%”有效

而对于第二个,只有“/”有效

我很困惑

4

3 回答 3

4

除法运算符是/,不是%

bash 也没有浮点数。解决方法是做类似的事情

if (( 10 * $b / $d >= 7 ))

或者

if (( 10 * $b >= 7 * $d ))
于 2011-11-28T19:58:55.917 回答
3

BASH 是一种没有浮点运算的无类型编程语言。但是,您可以使用bc工具进行浮点运算。以下文章很好地解释了如何:http ://www.linuxjournal.com/content/floating-point-math-bash 。您需要的是float_cond()功能。

于 2011-11-28T19:51:36.597 回答
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" }'
于 2011-11-28T20:07:39.027 回答