用subprocess.call不继续执行下一个命令

2024-09-30 22:27:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在运行一些linux命令,但是在linuxeredoc之后,下一个(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内部有错误,它根本不会继续。 我说的是“dsa”命令的一个allert错误。 当然,如果我通过linuxshell手动运行所有命令,那么一切都正常。在


Tags: import命令dfdblinux错误subprocessgtm
1条回答
网友
1楼 · 发布于 2024-09-30 22:27:02

当您使用反斜杠(\)继续行时,将不会插入真正的换行符。如果您将字符串放入交互式解释器中,您可以很容易地看到这一点:

>>> "foo \
bar \
baz"
'foo bar baz'

如您所见,\允许您中断行,但它不会产生多行字符串。在

要使用多行字符串,应改用三引号:

^{pr2}$

那么,您的heredoc字符串是有效的,它可能会工作。在

相关问题 更多 >