私はPythonでいくつかの環境変数を含むbashスクリプトをソースしようとしています。私はそれを行うために他のスレッドに従った。しかし、このスニペットに見られるように、変数の1つが不正な形式になっているようです。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'
与え何この問題の可能な解決策だろうか?おそらく
スニペットはどこから来たのですか?シェルスクリプトに構文エラーがある場合は、シェルスクリプトを修正できませんか?しかし、これは有効なシェル関数のように見え、直接評価には適していない形式でのみ表示されます。 – tripleee
これは不正な形式ではありません。つまり、その値が複数の行にまたがっています。改行は許可されます。あなたの 'ls'呼び出しは' os.environ [key] = value'文の実行中に無効な本体を "mc"関数に割り当てているのでエラーをダンプします。ここで何を達成しようとしていますか? – hamstergene
自分の環境変数をpython環境に表示したいだけです。これを行う他の方法はありますか?あるいは、私は複数の行にまたがる環境変数の値をどう扱うつもりですか? – Shahzad