【发布时间】:2014-08-16 06:55:56
【问题描述】:
我正在尝试编写一个 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 的形式出现在行上,这样它将作为参数传递,但我不能在第二个“EOF”的同一行上放置任何内容。在heredoc之前我也不能有任何东西,因为python会将它解释为文件名。
有没有办法在第二个 EOF 之后解决强制换行符,或者更好的是,通常有更好的方法吗?
(这也是我的第一个 SO 帖子,所以如果我在这个意义上做错了什么,请告诉我)
【问题讨论】:
标签: python shell escaping zsh heredoc