【发布时间】:2020-04-24 14:23:50
【问题描述】:
在this other SO question 中,我看到bash 的这种语法在编写for 循环时似乎在Python 中不起作用:
~ $ 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
【问题讨论】:
-
check_output("bash -c 'for num in {2..4}; do echo $num; done' ", shell=True).decode() -
所以问题是 Python 使用的不是 Bash 而是 Dash?
-
这表明它可能使用旧的
sh而不是bashsaltycrane.com/blog/2011/04/… -
您的
SHELL环境变量设置是什么?如果不是bash,把它改成那个有帮助吗? -
这对我有用
check_output(...., executable='/bin/bash')
标签: python bash subprocess