![如何在 bash 脚本中表达浮点表达式](https://linux22.com/image/87276/%E5%A6%82%E4%BD%95%E5%9C%A8%20bash%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E8%A1%A8%E8%BE%BE%E6%B5%AE%E7%82%B9%E8%A1%A8%E8%BE%BE%E5%BC%8F.png)
为什么
a2=100.
echo 1.1*$a2|bc
可以在终端上运行,但以下脚本中的 3 个变体则不能:
a2=100.
echo "
1.1*$a2|bc
$(1.1*$a2|bc)
$((1.1*$a2|bc))
">x.sh
答案1
因为您没有将echo
语句放入通过管道传输到 的脚本代码中x.sh
。第二种变体需要一个额外的echo
子shell命令$(...)
。第三种变体无效,因为$((...))
算术扩展不适用于浮点数。
a2=100.
echo "
echo 1.1*$a2|bc;
echo $(echo 1.1*$a2|bc);
">x.sh
结果:
# sh x.sh
110.0
110.0