一、for语句
for 变量名 in 取值列表
do
命令
done
例如:
1)vim /root/user.txt
u01 u02 u03 u04
2)vim /root/useradd.sh
#!/bin/bash
for i in cat /root/user.txt
do
useradd $i
done
3)vim /root/useradd_1.sh
#!/bin/bash
for i in {1..100}
do
useradd hehe_$i
done
4)vim /root/scan_ip.sh
IP=192.168.10.
for i in {1..254}
do
ping -w 1 $IP$i &>/dev/null
if [ $? -eq 0 ]
then
echo "$IP$i is up"
else
echo "$IP$i is down"
fi
done
注:for循环,依次将值赋予给变量执行,知道将其值取完毕为止
二、while语句
while [ 条件表达式 ]
do
命令
done
例如:
A=u0
B=0
while [ $B -le 5 ]
do
useradd $A$B
let B++
done
例如:
#!/bin/bash
PRE=expr $RANDOM % 1000
TIME=0
echo "你猜猜多少,范围为1-999"
while true
do
read -p "输入数字" INT
let TIME++
if [ $TIME -eq 3 ] //规定猜测次数为3
then
exit 0
fi
if [ $INT -eq $PRE ]
then
echo "你猜对了"
echo "你一共猜了$TIME"
return 0
elif [ $INT -gt $PRE ]
then
echo "你猜高了"
else
echo "你猜低了"
fi
done
注:while循环语句,通过条检测试语句执行,当满足条件则一直循环,知道不满足为止,跳出循环
三、case语句
case $1 in
模块1)
命令
;;
模块2)
命令
;;
模块3)
命令
;;
*)
命令
;;
esac
例如:
vim network.sh
#!/bin/bash
case $1 in
start)
echo "dovecot is start $(echo -e "\033[32m [ok] \033[0m")"
;;
stop)
echo "dovecot os stop $(echo -e "\033[32m [ok] \033[0m")"
;;
restart)
$0 stop
$0 start
;;
status)
netstat -utpln | grep 110 &>/dev/null
if [ $? -eq 0 ]
then
echo "dovecot is start status"
else
echo "dovecot is stop status"
fi
;;
*)
echo "$0 start | stop | restart | status"
;;
esac
注:case语句一般用于服务控制,通过用户输入的不同的参数执行下列的不同命令、
四、函数
将循环重新命令定义为一个函数,可多个地方重复调用
函数名(){ 命令 }
例:
vim /sh/hanshu.sh
#!/bin/bash
a(){ echo "xxx is start" }
b(){ echo "xxx is stop" }
c(){ echo "$0 is start | stop" } case $1 in
start) a ;; stop) b ;; *) c ;; esac