一、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