从一个shell小白来写一个if else shell,鸟哥的代码居然也是错的!!!
他的sh17.sh代码如下:
#!/bin/bash
# Program
# Use ping command to check the network's PC state.
# History
# 2009/02/18 VBird first release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
network="192.168.1" # 先定義一個網域的前面部分!
for sitenu in $(seq 1 100) # seq 為 sequence(連續) 的縮寫之意
do
# 底下的程式在取得 ping 的回傳值是正確的還是失敗的!
ping -c 1 -w 1 ${network}.${sitenu} &> /dev/null && result=0 || result=1
# 開始顯示結果是正確的啟動 (UP) 還是錯誤的沒有連通 (DOWN)
if [ "$result" == 0 ]; then
echo "Server ${network}.${sitenu} is UP."
else
echo "Server ${network}.${sitenu} is DOWN."
fi
done
也许是发行版的差异,我用ubuntu时发现
if [ "$result" == 0 ]; then
应该为
if [ "$result" = 0 ]; then
此外这个[]里面不能少个空格,不然会判断错误,这和主流语言还是有些不同的。。。