sun*_*tty 5 python bash python-2.4
我已经尝试了如何强制/ bin/bash解释器为oneliners所说的内容
通过做
os.system('GREPDB="my command"')
os.system('/bin/bash -c \'$GREPDB\'')
Run Code Online (Sandbox Code Playgroud)
但是没有运气,不幸的是我需要用bash运行这个命令而subp在这个环境中不是一个选项,我只限于python 2.4.有什么建议让我朝着正确的方向前进吗?
下面的解决方案最初仍然调用 shell,但它会切换到 bash 来执行您尝试执行的命令:
os.system('/bin/bash -c "echo hello world"')
Run Code Online (Sandbox Code Playgroud)
两个命令都在不同的子shell中执行.
在第一次system调用中设置变量不会影响第二次system调用.
您需要将两个命令放在一个字符串中(将它们组合在一起;).
>>> import os
>>> os.system('GREPDB="echo 123"; /bin/bash -c "$GREPDB"')
123
0
Run Code Online (Sandbox Code Playgroud)
注意您需要使用"$GREPDB"而不是'$GREPDBS'.否则,它按字面解释而不是扩展.
如果你可以使用subprocess:
>>> import subprocess
>>> subprocess.call('/bin/bash -c "$GREPDB"', shell=True,
... env={'GREPDB': 'echo 123'})
123
0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14882 次 |
| 最近记录: |