我正在运行一些linux命令,但在linux heredoc之后,下一个(df)命令没有执行。
import subprocess
uci = "cav"
dse_db = "gtmgbldir=/cav/gtm/" + uci + "/" + uci + ".gld; \
export gtmgbldir; \
dse << EOF \
dump -fileheader\n\
EOF\n; \
df; \
"
subprocess.call(dse_db, shell=True)
更重要的是,如果heredod内部有错误,它根本不会继续。 我正在谈论&#34; dsa&#34;的错误。命令。 当然,如果我通过linux shell运行所有命令mannualy都可以。
答案 0 :(得分:1)
当您使用反斜杠字符(\
)进行行继续时,则不会插入实际的换行符。如果将字符串放入交互式解释器中,则可以非常轻松地看到这一点:
>>> "foo \
bar \
baz"
'foo bar baz'
正如您所看到的,\
允许您分隔线但不会产生多线字符串。
要获得多行字符串,您应该使用三引号:
>>> '''foo
bar
baz'''
'foo\nbar\nbaz'
>>> """foo
bar
baz"""
'foo\nbar\nbaz'
然后,你的heredoc字符串是有效的,它可能会有效。