我在处理一个问题时遇到了一些奇怪的事情。这个命令似乎不起作用。(使用 ` 填充空白行)。
使用导出时
> /bin/bash -c "echo $FOO; export FOO=BAR; echo $FOO"
`
`
但该命令按预期工作。
> echo $FOO; FOO=BAR; export FOO=BAR; echo $FOO
`
BAR
使用 = 设置时出现同样的问题
> /bin/bash -c "echo $FOO; FOO=BAR; echo $FOO"
`
`
但该命令却按预期发挥作用。
> echo $FOO; FOO=BAR; FOO=BAR; echo $FOO
`
BAR
知道发生什么事了吗?
答案1
这是双引号的问题。您的 shell(‘外部’ shell)将$FOO
在运行命令之前展开。如果您设置了$FOO
某个值(比如说“FOO”),您实际上会运行此命令。
/bin/bash -c "echo FOO; export FOO=BAR; echo FOO"
如果你没有设置 FOO,则运行此命令
/bin/bash -c "echo ; export FOO=BAR; echo "
请使用单引号来获得您所期望的结果。
/bin/bash -c 'echo $FOO; FOO=BAR; echo $FOO'