for、while、case

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

扫描二维码关注公众号,回复: 2325383 查看本文章

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

猜你喜欢

转载自blog.51cto.com/13770300/2149084
今日推荐