在彼此linux python之后运行多个命令行

时间:2015-05-22 13:32:08

标签: python linux perl shell

我想在上一个完成后在同一行中运行多个命令。

我在python脚本中执行以下操作:

os.system("start_view myView && perl /home/user/Development/count_test.pl -rev 001 -project myproject && /usr/bin/python /home/user/Development/setDoneFlag_Count_Lines.py")

首先我用clearcase start_view myview 设置一个视图,然后我想执行一个perl程序。问题是它没有,它只是设置视图(我需要为了让我执行perl程序)但它实际上从未启动过perl程序,所以问题是我做错了什么?似乎 start_view myView 启动了一个新shell,那么如何在视图启动的新创建的shell中执行perl脚本?

提前致谢。

1 个答案:

答案 0 :(得分:1)

通常,从os.system()调用时,多个相关命令应该有效:

>>> rv = os.system("ls /dev/null && grep mhawke /etc/passwd")
/dev/null
mhawke:x:1000:1000:mhawke:/home/mhawke:/bin/bash
>>> rv
0

但是如果一个命令失败(由非零退出状态确定),则不执行以下命令:

>>> rv = os.system("ls /phantom && grep mhawke /etc/passwd")
ls: cannot access /phantom: No such file or directory
>>> rv
512

那么,你确定start_view返回退出代码0吗?你确定start_view会回来吗? - 可以阻止等待输入。您确定命令实际上不是startview myView吗?

您可以通过在命令行上执行此操作找到:

$ start_view myView
$ echo $?

如果显示0,则尝试链中的下一个命令,直到找到罪魁祸首。