【发布时间】:2016-05-30 09:09:47
【问题描述】:
这是我在 python 中运行并得到预期结果的 bash 命令:
count = subprocess.Popen("ps -ef | grep app | wc -l", stdout=subprocess.PIPE, shell=True)
但是当我想传递一个参数(在这种情况下是计数)时,我不知道该怎么做。 我试过了:
pid = subprocess.call("ps -ef | grep app | awk -v n=' + str(count), 'NR==n | awk \'{print $2}\'", shell=True)
和
args = shlex.split('ps -ef | grep app | awk -v n=' + str(count), 'NR==n | awk \'{print $2}\'')
pid = subprocess.Popen(args, stdout=subprocess.PIPE, shell=True)
在其他尝试中,来自这里的各种帖子,但仍然无法成功。
【问题讨论】:
-
因为您使用
' + str(..)而不是" + str(...)来终止您的字符串。在第二次尝试时,无论出于何种原因,您都会传递一个冒号, 'NR==。你的语法到处都是。
标签: python bash subprocess