スクリプトの特定のポイントで、source
構成ファイルを作成した後、いくつかの変数が設定され、設定されていない場合は実行を停止し、不足している変数についてユーザーに通知するようにします。私が試してみました
for var in $one $two $three ; do
...
ただし、たとえば$two
設定されていない場合、ループは実行されません$two
。次に試したのは
for var in one two three ; do
if [ -n ${!var} ] ; then
echo "$var is set to ${!var}"
else
echo "$var is not set"
fi
done
しかし、2が設定されていない場合、「2は設定されていません」ではなく、「2が設定されています」と表示されます。
必要な変数がすべて設定されていることを確認するにはどうすればよいですか?
更新/解決策:「set」と「set、but empty」に違いがあることを知っています。私は今(/programming//a/16753536/3456281とこの質問への回答のおかげで)以下を使用しています:
if [ -n "${!var:-}" ] ; then
そのため、var
が設定されていても空の場合、それはまだ無効と見なされます。
set -u
、スクリプトの先頭に追加して、未設定の変数が使用されたときにスクリプトをすぐに終了することもできます。