zsh:在zsh脚本中作业文件后的换行转义

1 投票
1 回答
747 浏览
提问于 2025-04-18 11:03

我正在尝试写一个 zsh 脚本,其中包含一个可以接收参数的 Python 单行代码。

#!/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 后必须换行的问题,或者更好的是,通常有没有更好的方法来做到这一点?

(另外,这是我第一次在 Stack Overflow 发帖,所以如果我在这方面做错了什么,请告诉我。)

1 个回答

1

这可能是你想要的效果:

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

撰写回答