コンテキスト
.configファイルを読み込む.shファイルを書き込みます。この.configファイル(私は編集できません)にはいくつかの変数があります。これらの変数が環境変数として定義されているかどうかをテストしたい。bashでvarを使って既存の環境変数をチェックする方法は?
.configファイル:
APPLICATION_PATH=/var/www/application
MONGO_DATA_PATH=/var/lib/mongodb
MYSQL_DATA_PATH=/var/lib/mysql
test.shファイル:
#!/bin/sh
if test -e ../my_folder/.config # Test if the .config file exists
then
cat ../my_folder/.config | while read line; do # Read the .config file line per line
env_var="${line%=*}" # Get the part before the '=' character of the current line (e.G. APPLICATION_PATH)
echo $env_var # Display the var (e.G. APPLICATION_PATH)
# Here, I would like to display the env var,
# e.G. like it would do using echo $APPLICATION_PATH
# but using the $env_var
("echo \$$env_var") # Throw an error
done
fi
問題
("echo \$$env_var")
が可能ではないようです。
がどのように私は$env_var
を使用して環境変数があるかどうかをテストすることができます
APPLICATION_PATH
./test.sh: ligne 13: echo $APPLICATION_PATH : not found
MONGO_DATA_PATH
./test.sh: ligne 13: echo $MONGO_DATA_PATH : not found
MYSQL_DATA_PATH
./test.sh: ligne 13: echo $MYSQL_DATA_PATH : not found
ポータブル、安全、シンプル:いずれか2つを選択します。 – chepner
私は 'eval'を使うと、私は間違ったことをするだろうと私は耳を傾けましたが、私の場合は選択肢がありません。 – darckcrystale