eg:
if [ $# -lt 2 ] //参数个数小于2
then
exit 1
elif [ $# -gt 2 ] //参数个数大于2
exit 1
fi
说明:
(1)、if/else语句语法格式(如果写一行)
if list1; then list; [elif list; then list;] ... [else list;] fi
(2)、二元操作
eg: arg1 -lt arg2 // lt less than
操作符 含义-eqequal to ,等于-nenot equal to ,不等于-leless than or equal to ,小于等于-gtgreater than,大于-gegreater than or equal to,大于等于
eg:case word in
parameter1)
command-list1
;;
parameter2 )
;;
parameter3)
;;
*)
echo "default"
;;
esac
( 备注: “;&” 和 “;;&” 如果被使用来终止语句,则shell会继续执行下一个句子中的command-list,直到遇到“;;” 。)
eg:
while [ "$IP" -lt "120" ]
do
echo -en "ping ${NETWORK}.${IP} ..."
ping -cl -wl ${NETWORK}.${IP} > /dev/null 2 > &1
if [ "$?" -eq 0 ]
then
echo "ok"
else
echo "failed"
fi
let IP=${IP}+1
done
exit 0
4.1 shell 脚本不停地询问用户要执行什么操作,直到用户输入quit才会退出。
eg:
#!/bin/bash
QUIT_COMMAND=quit
until [ "$USER-INPUT" = "$QUIT_COMMAND" ]
do
//直到输入quit才退出
done
exit 0
(备注:[ ] 中两个字符串比较:
-n STRING //字符串长度为非0则返回真-z STRING //字符串长度为0则返回真 STRING1 = STRING2 // 两字符串相同则返回真STRING1 != STRING2 //两字符串不相同则返回真)
*******shell的内建测试命令 [ 和 ] 的两侧需要空格。
5.1 、for 语句格式
for name in word1 word2 ... wordn
do
commands
done
//备注 第一次for循环时,for被设置为word1,第二次被设置为word2...
5.2、 shell 下c语言风格的for循环
for (( p=0 ,k=1000;p<=10;p++,k-=12))
do
echo "i= $p",j=%k”
done
exit 0
//备注:在bash中单“(”变为 “((” ,变量的引用不再加前缀。
语法格式:
select name [ in words ... ]
do
commands
done
eg: #!/bin/bash
select dir in /bin /etc /ljh quit
do
if [ -n "$dir" ]
then
if [ "$dir" = "quit" ]
exit 0
fi
done
输出: 1)/bin 2)/etc 3)/ljh 4)quit
#?
(备注:用户的输入会保存到$REPLY
echo "Press \"Enter\" directory to show menu again )"
//按下回车->和键盘同步
循环中默认的提示符是“#?”
可在 #!/bin/bash 后添加
PS3=“Please make a select >>”
break [n] //从循环中退出,可以为for、while、until、select循环
如果没有指定n,则只结束最内层的循环
n:跳出第n层
eg:
if ...
then
break 2;
fi
)
continue[n] //从包裹continue的for、while、until或select循环语句的第n层的循环语句的下一次迭代。