1

我正在寻找解决方案的建议以及处理确定多个 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)= null

echo "请检查您输入的名称,然后重试"

4

3 回答 3

3

有点傻,但应该工作

if ! [[ ${sfcompname}${sfcompip}${lacompname}${lacompip} ]]
then
  echo "Please check the name you entered and try again"
fi
于 2013-03-07T01:08:37.860 回答
1

您可以为此使用另一个变量,将其初始化为一个值,然后在任何if语句触发时进行更改。然后到最后,如果它没有改变,那么你知道他们都没有被解雇。这样的事情就足够了:

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
于 2013-03-07T01:07:45.693 回答
1

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

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

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

于 2013-03-07T09:01:15.820 回答