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

问题描述 投票:0回答:1

由于this other SO question,我发现在编写bash循环时Python不喜欢for的这种语法:

~ $ for num in {2..4}; do echo $num; done
2
3
4

作为一次迭代,而不是4次不同的迭代:

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

为什么Python不支持此语法?

我看到确实支持此其他语法:

>>> print(subprocess.check_output("for num in 2 3 4; do echo $num; done", shell=True).decode())
2
3
4
python bash subprocess
1个回答
1
投票

[发布How to use the bash shell with Python's subprocess module instead of /bin/sh显示它使用/bin/sh,但是您可以使用executable='/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 "command"

import subprocess

print(subprocess.check_output('bash -c "for num in {2..4}; do echo $num; done" ', shell=True).decode())
© www.soinside.com 2019 - 2024. All rights reserved.