我想在python中找到包含一些環境變量的bash腳本。我跟着另一個線程去做。但是,似乎其中一個變量是畸形的,可以在給定的片段中看到。在python中檢測到格式不正確的環境變量
COLORTERM=gnome-terminal
mc=() { . /usr/share/mc/mc-wrapper.sh
}
_=/usr/bin/env
我使用下面的代碼來設置當前環境。
import os
import pprint
import subprocess
command = ['bash', '-c', 'source init_env && env']
proc = subprocess.Popen(command, stdout = subprocess.PIPE)
for line in proc.stdout:
(key, _, value) = line.partition("=")
os.environ[key] = value
proc.communicate()
'
如果我改變了上面的代碼有點像把一個條件:
for line in proc.stdout:
(key, _, value) = line.partition("=")
if not value:
continue
os.environ[key] = value
然後一切正常,但環境被破壞,因爲缺少一個支架可以看出從括號出現在新行的環境變量的片段。由於這種腐敗的,如果我運行一些其他的命令一樣
os.system("ls -l")
它給了我下面的錯誤
sh: mc: line 1: syntax error: unexpected end of file
sh: error importing function definition for `mc'
可能是什麼這個問題可能的解決方案?
非常感謝
這段代碼從哪裏來?如果在shell腳本中有語法錯誤,你不能修復shell腳本嗎?但是這看起來像一個有效的shell函數,只能以不適合直接評估的形式打印。 – tripleee 2012-02-16 07:36:21
這不是畸形的,那是它的價值超過幾行。換行符是允許的。你的'ls'調用會拋出錯誤,因爲你在執行'os.environ [key] = value'語句時已經爲「mc」函數分配了無效的主體。你想在這裏完成什麼? – hamstergene 2012-02-16 09:13:40
我只想讓我的環境變量出現在python環境中。有沒有其他方法可以做到這一點?或者我該如何處理跨越多行的環境變量的值? – Shahzad 2012-02-16 09:26:02