zsh:在zsh脚本中的heredoc之后转义换行符

时间:2014-06-25 15:51:37

标签: python shell escaping zsh heredoc

我试图编写一个zsh脚本,其中包含一个带有参数的python 1-liner。

#!/bin/zsh

foo_var="foo"

python -c "import sys; print sys.argv" $foo_var

(这不是我的实际代码,但这是我正在做的事情的要点。)

该代码输出以下内容:

['-c', 'foo']

一个衬垫比我想要的长一点,所以我把它放在一个heredoc中,就像这样:

#!/bin/zsh

bar_var="bar"

python << EOF    
import sys                                                                                                                                                    
print sys.argv                                                                                                                                                
EOF                                                                                                                                                           
$bar_var

(同样,不是我的实际代码,但是相同的想法。)

输出:

['']
./doctest.zsh:14: command not found: bar

我需要$bar_var作为python在线,所以它将作为参数传递,但我不能在第二个&#39; EOF&#39 ;.我也无法在heredoc之前拥有任何东西,因为python会将其解释为文件名。

有没有办法在第二个EOF之后解决强制换行,或者更好的是,通常有更好的方法吗?

(这也是我的第一篇SO帖子,所以如果我在这个意义上做错了,请告诉我)

1 个答案:

答案 0 :(得分:1)

这可能会做你想要的:

python - $bar_var << EOF 
import sys
print sys.argv
EOF