`/bin/bash -c` 中的导出变量

Pet*_*vic 3 bash export quoting

我正在尝试在/bin/bash -c命令中导出变量。

这导致空输出:

/bin/bash -c "export FOO=foo; echo $FOO"
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?

Sto*_*ica 5

由于您对命令进行$FOO了双引号,因此在您当前的 shell 中对其进行了评估,而不是通过/bin/bash -c. 也就是说,实际执行的是这样的:

/bin/bash -c 'export FOO=foo; echo '
Run Code Online (Sandbox Code Playgroud)

用单引号括起来:

/bin/bash -c 'export FOO=foo; echo $FOO'
Run Code Online (Sandbox Code Playgroud)

等效的较短形式:

FOO=foo /bin/bash -c 'echo $FOO'
Run Code Online (Sandbox Code Playgroud)