我有这个bash功能,检查我是否在互联网上。它有助于我需要在bash脚本中进行快速if internet-connected
测试。
由于上个月它非常有用,我试图复制它的设计,以便有一个简单的ubuntu测试器来测试操作系统是否是Ubuntu。然后这发生了......
internet-connected(){
wget -q --spider http://google.com
if [ $? -eq 1 ]
then
echo 'internet is connected'
return 1
else
echo 'internet is not connected'
return 0
fi
}
echo "testing internet-connected"
if internet-connected
then
echo 'connected'
else
echo 'not connected'
fi
check-for-ubuntu(){
tester=$(lsb_release -i | grep -e "Ubuntu" -c)
if [ $tester -eq 1 ]
then
echo 'ubuntu detected'
return 1
else
echo 'ubuntu not detected'
return 0
fi
}
echo ""
echo "testing check-for-ubuntu"
if check-for-ubuntu
then
echo 'this is ubuntu'
else
echo 'this is not ubuntu'
fi
testing internet-connected
internet is not connected
connected
testing check-for-ubuntu
ubuntu detected
this is not ubuntu
[Finished in 0.9s]
为什么逻辑在这两个函数中似乎是倒退的?
你们这些回答得非常好,谢谢。
答案 0 :(得分:5)
Shell脚本不是C(或C ++ / Java / etc / etc.等等)。
您的返回值是倒退的。
答案 1 :(得分:1)
您的check-for-ubuntu
可以使用grep -q
:
check-for-ubuntu() {
lsb_release -i | grep -q "Ubuntu"
}
grep -q
将根据Ubuntu
命令中的模式lsb_release
返回1或0。