加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何强制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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读