通过做
os.system('GREPDB="my command"') os.system('/bin/bash -c \'$GREPDB\'')
但是,没有运气,不幸的是,我需要使用bash运行此命令,并且在这种环境下,subp不是一个选择,我仅限于python 2.4。有什么建议可以使我朝正确的方向发展吗?
这两个命令在不同的子shell中执行。
在第一个system调用中设置变量不会影响第二个system调用。
system
您需要将两个命令放在一个字符串中(与组合;)。
;
>>> import os >>> os.system('GREPDB="echo 123"; /bin/bash -c "$GREPDB"') 123 0
注意 您需要使用"$GREPDB"而不是'$GREPDBS'。否则,将按字面解释而不是对其进行扩展。
"$GREPDB"
'$GREPDBS'
如果可以使用subprocess:
subprocess
>>> import subprocess >>> subprocess.call('/bin/bash -c "$GREPDB"', shell=True, ... env={'GREPDB': 'echo 123'}) 123 0