我跑:
proc = subprocess.run(["echo", "$(echo 1111dGUv+rG551123eFwBhCMde6BIS90c3AAAAA= | base64 -d)"], check=True, stdout=subprocess.PIPE)
print(proc.stdout)
得到:
b'$(echo 1111dGUv+rG551123eFwBhCMde6BIS90c3AAAAA= | base64 -d)\n'
但是希望在 subprocess.run 中执行
$(echo 1111dGUv+rG551123eFwBhCMde6BIS90c3AAAAA= | base64 -d)
然后传递给 echo
。所以结果可能是:
�]ute/����]v��p�u�!/tsp
如何在 subprocess.run() 中实现?
使用
shell=True
,在这种情况下你不需要这个额外的echo
。
proc = subprocess.run(["echo 1111dGUv+rG551123eFwBhCMde6BIS90c3AAAAA= | base64 -d"], check=True, shell=True, capture_output=True)
print(proc.stdout)
你也可以像这样用 Python 制作这个管道:
echo = subprocess.Popen(('echo', '1111dGUv+rG551123eFwBhCMde6BIS90c3AAAAA='), stdout=subprocess.PIPE)
output = subprocess.check_output(('base64', '-d'), stdin=echo.stdout)
echo.wait()
print(output)
将
shell=True
参数传递给subprocess.run()
函数,像这样:
proc = subprocess.run('echo "$(echo 1111dGUv+rG551123eFwBhCMde6BIS90c3AAAAA= | base64 -d)"',
shell=True,
check=True,
stdout=subprocess.PIPE)
print(proc.stdout)