测试空变量

时间:2014-06-27 06:07:22

标签: bash shell variables

我的脚本中有大量变量,如果任何一个变量为空,我希望脚本出错。

我知道我可以:

if [[ -z "$var_1" ]] || [[ -z "$var_2" ]] || ... [[ -z "$var_n" ]]; then
  # failure message
fi

但是,如果以这种方式执行此操作,我无法通知用户哪个变量为空。是否有上述的替代方法,以便我可以告知用户空变量?

2 个答案:

答案 0 :(得分:3)

#!/bin/sh
foo=(var_1 var_2 var_n)

for bar in ${foo[*]}
do
  if [[ ! ${!bar} ]]
  then
    echo $bar is empty
  fi
done

答案 1 :(得分:1)

首次引用变量时使用${var:?var is empty or unset}。如果空字符串是可接受的,并且您只关心是否设置了变量,请执行${var?var is unset}。在参数扩展中使用?会导致shell终止,如果变量是(空或)未设置。