我正在尝试执行以下命令:
$ bash -c "var='test' && echo $var"
Run Code Online (Sandbox Code Playgroud)
并且仅打印一个空行。
如果我执行相同的命令而没有 bash -c
$ var='test' && echo $var
test
Run Code Online (Sandbox Code Playgroud)
分配给的值$var正在打印。有人可以解释为什么我不能在第一个示例中分配变量吗?
双引号扩展变量,因此您的命令扩展为
bash -c "var='test' && echo"
Run Code Online (Sandbox Code Playgroud)
如果$var在运行时为空。您可以使用以下方式验证行为
var=hey
bash -c "var='test' && echo $var"
Run Code Online (Sandbox Code Playgroud)
切换引号:
bash -c 'var="test" && echo $var'
Run Code Online (Sandbox Code Playgroud)