我在没有任何经验的情况下首先潜入bash并且遇到了一些障碍:我写了一个小的bash脚本来确定值的平均值(它现在只是一个总数)正在由ac可执行文件返回。
#Sample value of #s1total: 0+0.000117+0.000149+0.000106
printf "\n%s" $s1total
#The following line works
printf "\nTotal: %s\n" $(bc <<< $s1total)
#the following also works
echo
echo -n "Total: "
echo $s1total | bc
#The following line does not work
printf "\nTotal: %s\n" $($s1total|bc)
我最终发现可以通过将其更改为$(echo $s1total|bc)
来使最后一行工作,但我不明白为什么会有效...
如果我按原样运行,则会收到错误:./sievetest.sh: line 25: 0+0.000117+0.000149+0.000106: command not found
字符串是否在管道之前运行?为什么?为什么要添加&#34; echo&#34;修理它? 第三种方法与第一种方法和第二种方法有何不同?
(顺便说一句,我认为heredoc重定向运算符是&lt;&lt;,为什么额外&lt;?)
答案 0 :(得分:3)
你有这个:
$($s1total|bc)
基本上是
$(0+0.000117+0.000149+0.000106 | bc)
e.g。运行名为0+....
的命令并将其传递给bc
。
应该是
$(echo $s1total|bc)