Python中使用` subprocess'编写bash for循环的正确方法`

Python中使用` subprocess'编写bash for循环的正确方法`,python,bash,subprocess,Python,Bash,Subprocess,在中,我看到在为循环编写时,bash的这种语法在Python中似乎不起作用: {2..4}中num的~$;执行echo$num;完成 2. 3. 4. 与4个不同的迭代不同,它只执行一个迭代: >>打印(子进程.检查输出(“for num in{2..4};do echo$num;done”,shell=True).decode()) {2..4} 为什么Python不支持这种语法 我发现确实支持这种其他语法: >>打印(子流程检查输出(“2 3 4中的数值;do echo$num;done

在中,我看到在为循环编写
时,
bash
的这种语法在Python中似乎不起作用:

{2..4}中num的
~$;执行echo$num;完成
2.
3.
4.
与4个不同的迭代不同,它只执行一个迭代:

>>打印(子进程.检查输出(“for num in{2..4};do echo$num;done”,shell=True).decode())
{2..4}
为什么Python不支持这种语法

我发现确实支持这种其他语法:

>>打印(子流程检查输出(“2 3 4中的数值;do echo$num;done”,shell=True)。解码())
2.
3.
4.
Post显示它使用了
/bin/sh
,但您可以使用
可执行文件='/bin/bash'
来更改它

import subprocess

print(subprocess.check_output("for num in {2..4}; do echo $num; done", shell=True, executable='/bin/bash').decode())

最终您可以使用
bash-c“命令”


检查输出(“bash-c”表示{2..4}中的num;do echo$num;done',shell=True)。decode()
所以问题是Python使用的不是bash而是Dash?这表明它可能使用旧的
sh
而不是
bash
您的
shell
环境变量设置是什么?如果它不是
bash
,将其更改为该文件是否有帮助?这对我来说很有用
检查输出(..,executable='/bin/bash')
import subprocess

print(subprocess.check_output('bash -c "for num in {2..4}; do echo $num; done" ', shell=True).decode())