sh -c" echo $ SOMEVAR"搞乱

时间:2014-12-24 23:36:18

标签: bash

我正在编写一个使用sh -c 'bash in here'调用的复杂bash脚本。但是当我尝试设置一个变量时,我会得到非常明显的行为:

sh -c "SOMEVAR=$(expr 1 - 2) && echo $SOMEVAR"输出1时应为-1

据我了解,$(expr 1 - 2)评估为-1。所以基本上这个脚本SOMEVAR=-1 && echo SOMEVAR返回1

我对Bash有什么不了解?我的剧本出了什么问题?

1 个答案:

答案 0 :(得分:1)

我弄清楚Bash在做什么:因为我使用双引号("),我的变量(SOMEVAR)外部值(1)是被插入实际运行代码的sh -c内容:

sh -c "SOMEVAR=$(expr 1 - 2) && echo 1"

而不是:

sh -c "SOMEVAR=$(expr 1 - 2) && echo $SOMEVAR"

解决方案:使用单引号('

sh -c 'SOMEVAR=$(expr 1 - 2) && echo $SOMEVAR'