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

标签 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_varpython 放在同一行,这样它将作为参数传递,但我不能在同一行上放置任何内容第二个“EOF”。我在heredoc之前也不能有任何东西,因为python会将其解释为文件名。

有没有办法解决第二个 EOF 之后的强制换行问题,或者更好的是,通常有更好的方法来做到这一点吗?

(这也是我的第一篇 SO 帖子,所以如果我在这方面做错了什么,请告诉我)

最佳答案

这可能会满足您的要求:

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

关于python - zsh:在 zsh 脚本中的heredoc之后转义换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24413284/

相关文章:

python - 如何在 Pandas Python 中将 reset_index 与多分组值(分层格式)一起使用

Python:如何让按钮在按下时卡住? - Tkinter

linux shell tar 不需要的额外目录

algorithm - 最简单(和正确)的转义算法是什么?

python - numpy `rint` 奇怪的行为

python - 更改数据透视表的索引?

linux - 在左花括号和右花括号之间获取字符串

linux输出通过主机名grep一个内部ip

c# - 传递给字典时字符未正确转义

php - 我应该如何将斜线添加到仅单引号并忽略双引号?