为什么
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