我有以下检查互联网连接的功能(我知道有更好的方法来检查互联网连接,但这不是主题):
function checkInternet() {
local HOST="http://google.com"
local WGET="/usr/bin/wget"
$WGET -q --tries=10 --timeout=10 --spider $HOST
if [[ $? -eq 0 ]]
then
echo "online"
else
echo "offline"
fi
}
现在我想直接在if语句中请求函数的返回值:
我尝试了几个类似于例如的脚本。这一个(我发现here):
if( $(checkInternet) -eq "online" )
then
echo "Function returned online"
else
echo "Function returned offline"
fi
我不想在if语句之前将其他变量初始化为“直接”的意思。
答案 0 :(得分:2)
您可以在BASH中使用它来检查函数的输出:
[[ $(checkInternet) == online ]] && echo "Function returned online" ||
echo "Function returned offline"
要比较条件,请使用[[...]]
(首选)或[...]
。
您可以在不评估任何条件的情况下简化上述内容:
echo "Function returned $(checkInternet)"
答案 1 :(得分:2)
case语句可以很好地执行此操作,并且没有非可移植的bashisms:
case $(checkInternet) in
(online) echo is online;;
(offline) echo is offline;;
esac
您还可以让checkInter返回状态,这简化了if
中的内容:
...
if [ $? -eq 0 ]; then
true
else
false
fi
与
一起if checkInternet; then
# online
else
# offLine
fi
答案 2 :(得分:1)
您实际上并未从checkInternet()函数返回值。如果你看一下你发布的例子,你会发现他们的函数最后有一个return语句。