如何在python脚本中执行多个CLI命令?

时间:2015-01-16 15:04:50

标签: python linux ubuntu command-line-interface teamforge

我正在使用TeamForge的CLI在缺陷跟踪器部分中创建工件。 CLI文件/可执行文件名为“ctf”,没有扩展名。我想使用python脚本来创建工件,但最多只能执行一个命令。我想一次创建一个bug。这是我到目前为止的代码:

import os
os.system("./ctf    go tracker1234;             # going to Defects section
                    create;                     # creating an artifact
                    set title This Is A Title;  # setting artifact's fields
                    set description desc123; 
                    set Product [Product 23]; 
                    set build_number Not known; 
                    set Severity Catastrophic; 
                    set steps_to_reproduce 1st comment; 
                    set Component [component 4]; 
                    set Version [version 19]; 
                    commit)                     # saving the artifact on TeamForge

以下是我不断收到的错误:

sh: 1: create: not found
sh: 1: commit: not found

所以我相信这些命令没有按顺序执行或按照我指定的顺序执行。这意味着每个命令都是单独执行的。是否有任何建议让这些命令按照我指定的顺序运行?

如果需要进一步说明,请告诉我。

更新

我刚发现你可以这样做:go tracker1234 create这是一个

中的两个步骤

2 个答案:

答案 0 :(得分:1)

您可以尝试将您的参数引用到ctf;看看这个:

>>> os.system("echo hi; echo again;")
hi
again

>>> os.system("echo 'hi; echo again;'")
hi; echo again;

分号终止shell中的命令。如果你的参数包含分号,你必须引用它们,这样它们就不会破坏你的参数列表。

但是,根据CTF guidelines,他们使用多个命令处理这种情况的方式似乎是将它们放入一个脚本并执行它:

./ctf script.txt

答案 1 :(得分:1)

要将信息传递给您的程序在标准输入上,请使用

  • 您指定的命令行中的shell here-documentpipeline等设施,或
  • Python的设施,例如根据{{​​3}}

或者,您的程序可能有一些“批处理模式”,允许您在命令行或文件中提供您的命令集,但是,查看How to launch and pass input to an external program,这似乎不是可能的。