我有一个运行zsh命令的Ruby脚本。当我从Ruby调用它时,zsh for-loop中的变量赋值不起作用。
# This just prints three newlines from the three echo invocations
# x does not get assigned to anything
puts `zsh -c "for x in 1 2 3; do echo $x; done"`
这里发生了什么?
答案 0 :(得分:1)
这是因为shell使用shell变量$x
的值扩展$x
。
>> puts `x=9999; zsh -c "for x in 1 2 3; do echo $x; done"`
9999
9999
9999
您可以使用单引号来阻止它:
puts `zsh -c 'for x in 1 2 3; do echo $x; done'`
或通过转义$
:
puts `zsh -c "for x in 1 2 3; do echo \\$x; done"`