我不知道如何在bash -c
命令中声明变量。
bash -c "var=3; echo $var"
让我们看看这里实际发生了什么:
$ set -x
$ bash -c "var=3; echo $var"
+ bash -c 'var=3; echo '
随着set -x
你得到了什么命令实际执行的轨迹(使用set +x
关闭这个功能)。在这里,我们看到在子外壳程序运行之前,该$var
变量已扩展为空字符串。bash -c
这是由于对参数的双引号引起的bash -c
,这将提示当前shell在字符串内进行变量扩展。由于var
变量在当前shell中是未定义的或为空,因此它的扩展为空字符串。
为了保护字符串不受外壳的“干扰”,请使用单引号:
$ bash -c 'var=3; echo $var'
+ bash -c 'var=3; echo $var'
3
...或逃脱$
(IMO不太好):
$ bash -c "var=3; echo \$var"
+ bash -c 'var=3; echo $var'
3
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句