小编典典

如何强制os.system()使用bash代替shell

python

通过做

os.system('GREPDB="my command"')
os.system('/bin/bash -c \'$GREPDB\'')

但是,没有运气,不幸的是,我需要使用bash运行此命令,并且在这种环境下,subp不是一个选择,我仅限于python
2.4。有什么建议可以使我朝正确的方向发展吗?


阅读 219

收藏
2021-01-16

共1个答案

小编典典

这两个命令在不同的子shell中执行。

在第一个system调用中设置变量不会影响第二个system调用。

您需要将两个命令放在一个字符串中(与组合;)。

>>> import os
>>> os.system('GREPDB="echo 123"; /bin/bash -c "$GREPDB"')
123
0

注意 您需要使用"$GREPDB"而不是'$GREPDBS'。否则,将按字面解释而不是对其进行扩展。

如果可以使用subprocess

>>> import subprocess
>>> subprocess.call('/bin/bash -c "$GREPDB"', shell=True,
...                 env={'GREPDB': 'echo 123'})
123
0
2021-01-16