我想检查,如果设置了多个变量,如果设置则只执行脚本代码,否则退出.
就像是:
if [ ! $DB=="" && $HOST=="" && $DATE=="" ]; then
echo "you did not set any variable"
exit 1;
else
echo "You are good to go"
fi
Run Code Online (Sandbox Code Playgroud)
Tom*_*ech 53
您可以-z用来测试变量是否未设置或为空:
if [[ -z $DB || -z $HOST || -z $DATE ]]; then
echo 'one or more variables are undefined'
exit 1
fi
echo "You are good to go"
Run Code Online (Sandbox Code Playgroud)
正如您使用了bash标记,我使用了扩展测试[[,这意味着我不需要在变量周围使用引号.我假设您需要定义所有三个变量才能继续.将exit在if分支指的else是多余的.
在符合POSIX标准的shell中执行此操作的标准方法如下:
if [ -z "$DB" ] || [ -z "$HOST" ] || [ -z "$DATE" ]; then
echo 'one or more variables are undefined'
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
这里的重要区别是每个变量检查都在单独的测试中进行,并且在每个参数扩展周围使用双引号.
If you are ok with writing a function for this purpose, it can be pretty convenient.
此解决方案使用${!VAR_NAME}语法来检查变量是否为空,并具有告诉您哪些变量名称为空的额外好处。
check_vars()
{
var_names=("$@")
for var_name in "${var_names[@]}"; do
[ -z "${!var_name}" ] && echo "$var_name is unset." && var_unset=true
done
[ -n "$var_unset" ] && exit 1
return 0
}
# Usage for this case
check_vars DB HOST DATE
echo "You are good to go"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32935 次 |
| 最近记录: |