本章内容:
- if语句
- for语句
- while语句
- break、continue
1、if语句
if语句用exit结束
1.1单分支
if 条件表达式 ;then
命令
fi
实例:
#!/bin/bash
read -p "请输入数字" num
if [ $num -lt 10 ] ;then
echo "${num}是数字两位数"
fi
...
╭─root@localhost.localdomain ~
╰─➤ bash test.sh
请输入数字3
3是数字一位数
1.2、多分支
if 条件表达式 ;then
命令
else
命令
fi
实例:
#!/bin/bash
read -p "请输入数字" num
if [ $num -gt 9 -a $num -lt 100 ] ;then
echo "${num}是数字两位数"
else
echo "${num}不是数字两位数"
fi
...
╭─root@localhost.localdomain ~
╰─➤ bash test.sh
请输入数字56
56是数字两位数
╭─root@localhost.localdomain ~
╰─➤ bash test.sh
请输入数字222
222不是数字两位数
1.3、多分支
if 条件表达式 ;then
命令
elif 条件表达式 ;then
命令
else
命令
fi
实例:
#!/bin/bash
num=`echo $RANDOM`
if [ $num -lt 1000 ];then
echo "$num小于1000"
elif [ $num -ge 1000 -a $num -lt 2000 ];then
echo "$num大于等于1000,小于2000"
elif [ $num -ge 2000 -a $num -lt 3000 ];then
echo "$num大于等于2000,小于3000"
elif [ $num -ge 3000 -a $num -lt 4000 ];then
echo "$num大于等于3000,小于4000"
else
echo "$num大于等于4000"
fi
...
╭─root@localhost.localdomain ~
╰─➤ bash test.sh
24497大于等于4000
╭─root@localhost.localdomain ~
╰─➤ bash test.sh
20763大于等于4000
2、for 循环
for 变量名 in 取值列表
do
命令
done
实例:
#!/bin/bash
. /etc/init.d/functions
ip=192.168.80.
for i in `seq 10`
do
if ping -c 1 -w 1 $ip$i &>/dev/null;then
echo -n " $ip$i" #-n:作用不换行 ;$ip前有空格
success
echo " "
sleep 1
else
echo -n " $ip$i"
failure
echo " "
sleep 1
fi
done
...
╭─root@localhost.localdomain ~
╰─➤ bash test.sh
192.168.80.1 [ OK ]
192.168.80.2 [ OK ]
192.168.80.3 [ OK ]
192.168.80.4 [ OK ]
192.168.80.5 [FAILED]
192.168.80.6 [FAILED]
192.168.80.7 [FAILED]
192.168.80.8 [FAILED]
192.168.80.9 [FAILED]
192.168.80.10 [FAILED]
3、while循环
while 条件表达式 ; do
命令
done
3.1、一般循环
当条件表达式为 false 时,终止循环
实例:
#!/bin/bash
N=0
while [ $N -lt 5 ]; do
echo $N
let N++
done
...
╭─root@localhost.localdomain ~
╰─➤ bash test1.sh
0
1
2
3
4
3.2、死循环
条件表达式为 true,将会产生死循环
#!/bin/bash
while true ;do
echo "hello"
sleep 1
done
...
╭─root@localhost.localdomain ~
╰─➤ bash test2.sh
hello
hello
hello
hello
hello
^C
- 命令行中输入 nohup bash naolie.sh & 即可在后台持续运行该脚本
4、break和continue语句
- continue 与 break 语句只能循环语句中使用;
- break:终止循环,运行针跳至done后;
- continue :跳出当前循环,运行针跳至do后,开始下一循环;
演示:
break语句
#!/bin/bash
N=0
while [ $N -lt 10 ]; do
let N++
if [ $N -eq 5 ]; then
break
fi
echo $N
done
...
╭─root@localhost.localdomain ~
╰─➤ bash test1.sh
1
2
3
4
continue语句
#!/bin/bash
N=0
while [ $N -lt 10 ]; do
let N++
if [ $N -eq 5 ]; then
continue
fi
echo $N
done
...
╭─root@localhost.localdomain ~
╰─➤ bash test1.sh
1
2
3
4
6
7
8
9
10
实例拓展:
实例1:
#!/bin/bash
echo "主机名:`hostname`"
echo "IP地址:`ip a | grep "global" | cut -d "/" -f 1 | cut -d "t" -f 2 | tr -d " "`"
echo "操作系统版本:`cat /etc/redhat-release`"
echo "内核版本:`uname -r`"
echo "CPU信息:`lscpu | grep -i "Model name" | cut -c "24-69"`"
echo "内存总大小:`free -h | grep "Mem" | cut -d "M" -f 2 | tr -d "em: "`M"
...
╭─root@localhost.localdomain ~
╰─➤ bash test6.sh
主机名:localhost.localdomain
IP地址:192.168.80.3
操作系统版本:CentOS Linux release 7.3.1611 (Core)
内核版本:3.10.0-514.el7.x86_64
CPU信息:Intel(R) Core(TM) i5-4210M CPU @ 2.60GHz
内存总大小:976M
...
实例二:
#!/bin/bash
sum=0
for i in `find / -type f -a -name "*.sh"`
do
size=`ls -l $i | cut -d " " -f 5`
let sum+=size
done
echo ".sh结尾的总大小$(($sum/1024))kb"
...
╭─root@localhost.localdomain ~
╰─➤ bash test7.sh
.sh结尾的总大小1098kb