【问题标题】:zsh: escape newline after heredoc in zsh scriptzsh:在 zsh 脚本中的 heredoc 之后转义换行符
【发布时间】: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_varpython 的形式出现在行上,这样它将作为参数传递,但我不能在第二个“EOF”的同一行上放置任何内容。在heredoc之前我也不能有任何东西,因为python会将它解释为文件名。

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

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

【问题讨论】:

    标签: python shell escaping zsh heredoc


    【解决方案1】:

    这可能会做你想做的事:

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

    【讨论】:

    • 谢谢!做到了。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    • 1970-01-01
    • 2018-04-14
    • 1970-01-01
    • 2021-12-23
    • 2014-08-24
    • 1970-01-01
    相关资源
    最近更新 更多