当你设定
shell=True
,
subprocess
使用
/bin/sh
.在Ubuntu上,
/垃圾箱/垃圾箱
不是Bash,而是使用特定于Bash的语法(
[[...]]
).你可以明确地向
bash
相反:
subprocess.check_output(["/bin/bash", "-c", "[[ -z $(git status -s) ]] && echo 'clean'"]).strip()
但现在还不清楚为什么要在这里使用shell脚本:只需运行
git status -s
使用Python,并自行处理结果:
out = subprocess.run(['git', 'status', '-s'], stdout=subprocess.PIPE)
if not out.stdout:
print("clean")