中的語句我試圖通過python運行bash代碼。正常語句(例如netstat)工作。但是,如果下面的函數不這樣做。我應該更改什麼才能正確運行以下代碼? 在此先感謝if subprocess.Popen
>>> import os
>>> import subprocess
>>>
>>> os.setenv['a']='test'
>>> _c = 'if [ "$a" == "test" ]; then echo $a; fi'
>>> print(subprocess.Popen(_c, shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8'))
/bin/sh: 1: [: anto: unexpected operator
檢查[Python的子/ POPEN與修改後的環境(http://stackoverflow.com/questions/2231227/python-subprocess-popen-with-a-modified-environment) – sal
似乎不成爲問題...'print(subprocess.Popen(「echo $ a」,shell = True,stdout = subprocess.PIPE).stdout.read()。decode('utf-8')) '完美的作品 – pidgey
我認爲它與'shell = True'標誌實際上做了什麼有關,即啓動一個shell並將字符串中的命令傳遞給它。如果我是正確的,你正在嘗試做什麼,如果[\「$ a \」== \「test \」]被翻譯成'sh -c「;然後在你的linux shell上echo $ a; fi」' 。如果你運行它,你會得到同樣的錯誤。但是,如何擺脫困境,目前還沒有擺脫過我。希望有更多見解的人可以投入。 – sal