Bash 测试空变量

Bash 测试空变量,bash,shell,variables,Bash,Shell,Variables,我的脚本中有大量变量,如果其中任何一个变量为空,我希望脚本出错 我知道我可以: if [[ -z "$var_1" ]] || [[ -z "$var_2" ]] || ... [[ -z "$var_n" ]]; then # failure message fi 但是,如果我这样做,我无法通知用户哪个变量是空的。有没有一种替代方法可以让我将空变量告知用户?只要在第一次引用变量时使用${var:?var为空或未设置}。如果可以接受空字符串,并且您只关心是否设置了变量,请执行${var?v

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

我知道我可以:

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

但是,如果我这样做,我无法通知用户哪个变量是空的。有没有一种替代方法可以让我将空变量告知用户?

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

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

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

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