无法在新 shell 中导出或设置变量

无法在新 shell 中导出或设置变量

我在处理一个问题时遇到了一些奇怪的事情。这个命令似乎不起作用。(使用 ` 填充空白行)。

使用导出时

> /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'

相关内容