シェルスクリプトは grep 値を使用して環境変数を設定できません。

シェルスクリプトは grep 値を使用して環境変数を設定できません。

シェルスクリプトでログファイルの値をgrepして環境値に設定したいと思います。ログファイルには次の行があります。

SOME_PATH=/some/specific/path

私のシェルスクリプトでキーワードを見つけてSOME_PATH上記の行を取得してから区切ります=が、環境変数を設定できるようになりました。

line=`grep "SOME_PATH" /path/to/the/log.log`
path=${line##*=} 
export SOME_PATH="$path"  #I cannot change the environment variable with this line.

bashファイルに以下のスクリプトしかない場合は、bashファイルを取得すると環境変数が変更されます。

export SOME_PATH=/some/specific/path

ベストアンサー1

原則として、ソリューションは機能するはずですが、強力ではありません。たとえば、grepedファイルの一致する行に次のコメント(またはその他の項目)があるとします。

SOME_PATH=/some/path # this is some path

これにより、そのコメントも拡張名の一部になりますpath。パスに実際に何があるかを確認するには(例:via printf "'%s'\n" "$path"

このように環境変数を設定すると、環境変数が設定されているシェルインスタンスとサブプロセスにのみ影響し、周囲の環境には影響しません。

おすすめ記事