bash -c变量未分配

Rok*_*.ma 0 linux bash shell

我正在尝试执行以下命令:

 $ 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正在打印。有人可以解释为什么我不能在第一个示例中分配变量吗?

cho*_*oba 6

双引号扩展变量,因此您的命令扩展为

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)