
シェルスクリプトでログファイルの値を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
原則として、ソリューションは機能するはずですが、強力ではありません。たとえば、grep
edファイルの一致する行に次のコメント(またはその他の項目)があるとします。
SOME_PATH=/some/path # this is some path
これにより、そのコメントも拡張名の一部になりますpath
。パスに実際に何があるかを確認するには(例:via printf "'%s'\n" "$path"
)
このように環境変数を設定すると、環境変数が設定されているシェルインスタンスとサブプロセスにのみ影響し、周囲の環境には影響しません。