我正在寻找解决方案的建议以及处理多个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
回音“请检查您输入的名称,然后重试”
答案 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”。