6

デバッグする必要のあるシェルコードがあるので、コードにその環境をファイルにダンプさせました

env > env.txt

そして、私のテストスクリプトで、それを調達したいと思います、test.sh:

. ./env.txt
echo $EXAMPLE
echo $EXAMPLE2

env.txtの内容は次のとおりです。

EXAMPLE=sh /hello/command.sh
EXAMPLE2=/just/some/path

しかし、envはその値を引用符で囲んでいないため、$EXAMPLEで問題が発生する傾向があります。このエラーが発生します。

test.sh:/hello/command.sh:見つかりません

明らかに、変数を設定する代わりに実行しようとしています。

この問題の最も早い回避策は何だと思いますか?

4

3 に答える 3

11

出力をファイルにリダイレクトする前に、二重引用符を追加します。

env | sed 's/=\(.*\)/="\1"/' > env.txt
于 2013-03-05T23:02:14.380 に答える
5
while read line; do
    declare "$line"
    # declare -x "$line"
    # export "$line"
done < env.txt

値を環境にエクスポートする場合は、-xオプションをdeclare使用するか、export代わりにコマンドを使用してください。

于 2013-03-06T13:29:29.247 に答える
1
while read line; do
 var="${line%=*}"
 value="${line##*=}"
 eval "$var=\"$value\""
done <env.txt
于 2013-03-05T23:06:56.243 に答える