从Ruby脚本调用zsh时令人费解的变量扩展行为
我有一个运行zsh命令的Ruby脚本。当我从Ruby调用zsh for循环时,它的变量赋值就不起作用了从Ruby脚本调用zsh时令人费解的变量扩展行为,ruby,zsh,Ruby,Zsh,我有一个运行zsh命令的Ruby脚本。当我从Ruby调用zsh for循环时,它的变量赋值就不起作用了 # 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"` 这是怎么回事?这是因为shell使用shell变量$x的值展开$x >> p
# 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"`
这是怎么回事?这是因为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"`