如果多个IF为空,请执行某些操作

时间:2013-03-07 01:05:33

标签: bash if-statement

我正在寻找解决方案的建议以及处理多个IF是否为空的最佳方法。

我有:

if [ -n "$sfcompname" ]; then
        echo $sfcompname
fi
if [ -n "$sfcompip" ]; then
        echo $sfcompip
fi
if [ -n "$lacompname" ]; then
        echo $lacompname
fi
if [ -n "$lacompip" ]; then
        echo $lacompip
fi

..我确信可以做得更好,但我现在的主要问题是试着说:

if(所有那些IF)= null

回音“请检查您输入的名称,然后重试”

3 个答案:

答案 0 :(得分:3)

有点傻,但应该有效

if ! [[ ${sfcompname}${sfcompip}${lacompname}${lacompip} ]]
then
  echo "Please check the name you entered and try again"
fi

答案 1 :(得分:1)

您可以使用另一个变量初始化为某个值,然后在任何if语句触发时更改。然后在最后,如果它没有改变,那么你知道它们的 none 被解雇了。这样的东西就足够了:

fired=0

if [ -n "$sfcompname" ]; then
    echo $sfcompname
    fired=1
fi
if [ -n "$sfcompip" ]; then
    echo $sfcompip
    fired=1
fi
if [ -n "$lacompname" ]; then
    echo $lacompname
    fired=1
fi
if [ -n "$lacompip" ]; then
    echo $lacompip
    fired=1
fi

if [[ ${fired} -eq 0 ]] ; then
    echo 'None were fired'
fi

答案 2 :(得分:1)

另一种可能性是使用变量检查快捷方式:

name="$sfcompname$sfcompip$lacompname$lacompip"        
${name:?"Please check the name you entered and try again"} 

如果没有设置任何变量,这将退出程序。该消息是可选的,它会覆盖标准的“参数null或not set”。