我在bash中编写脚本,我需要在此代码中添加第三个变量:Res=$(echo $VAR1-$VAR2|bc)
或此代码:Res=$(bc <<< "$VAR1-$VAR2")
(两者都允许我计算十进制数),i需要进行以下计算:Res=$VAR3-($VAR1-$VAR2)
答案 0 :(得分:4)
除非我遗漏了某些内容,否则您似乎只需要这样做:
Res=$(bc <<< "$VAR3-($VAR1-$VAR2)")
这三个变量在shell中展开并传递给bc
,后者执行计算。这与两个变量的示例没有什么不同。
整个命令的双引号很重要,因为它们阻止shell解释(
和)
。你的两个变量的例子是有效的,因为字符串只包含&#34; safe&#34;数字和-
之类的字符(没有空格或对shell有重要意义的其他字符)。
一般情况下,当字符串包含变量时,应始终使用单引号引用字符串和双引号。
如果需要,您可以使用echo
传递字符串:
Res=$(echo "$VAR3-($VAR1-$VAR2)" | bc)
使用<<<
更好,因为它不使用管道,因此不会创建任何子壳。同样,这里需要双引号。