我想确保在脚本的某个点上,在访问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
但是,如果没有设置两个,我仍然会得到“两个设置为”而不是“两个未设置”。
如何确保设置了所有必需的变量?
更新/解决方案:我知道“设置”和“设置,但为空”之间存在区别。我现在使用(感谢/programming//a/16753536/3456281和此问题的答案)以下内容:
if [ -n "${!var:-}" ] ; then
因此,如果var
设置但为空,则仍视为无效。
set -u
到脚本的开头,以在使用unset变量时立即终止脚本。