如何强制os.system()使用bash而不是shell
发布时间:2020-12-15 22:02:09 所属栏目:安全 来源:网络整理
导读:我已经尝试过 How to force /bin/bash interpreter for oneliners中所说的内容 通过做 os.system('GREPDB="my command"')os.system('/bin/bash -c '$GREPDB'') 但是没有运气,不幸的是我需要用bash运行这个命令而subp在这个环境中不是一个选项,我只限于pytho
我已经尝试过
How to force /bin/bash interpreter for oneliners中所说的内容
通过做 os.system('GREPDB="my command"') os.system('/bin/bash -c '$GREPDB'') 但是没有运气,不幸的是我需要用bash运行这个命令而subp在这个环境中不是一个选项,我只限于python 2.4.有什么建议让我朝着正确的方向前进吗? 解决方法
两个命令都在不同的子shell中执行.
在第一次系统调用中设置变量不会影响第二次系统调用. 您需要将两个命令放在一个字符串中(将它们与;组合). >>> import os >>> os.system('GREPDB="echo 123"; /bin/bash -c "$GREPDB"') 123 0 注意您需要使用“$GREPDB”而不是“$GREPDBS”.否则,它按字面解释而不是扩展. 如果可以使用子进程: >>> import subprocess >>> subprocess.call('/bin/bash -c "$GREPDB"',shell=True,... env={'GREPDB': 'echo 123'}) 123 0 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |