Linux笔记06(部分)
# 1、bash解释器 与shell脚本(二)
## (1)流程控制语句
> 通常脚本都是从上至下一股脑的执行,效率是效率,但一旦某条命令执行失败了,那后面的功能全都会受到影响。
if语句格式
***(1)单分支***
```
if 条件测试操作
then 命令序列1
else 命令序列2
fi
```
***(2)多分支***
```
if 条件测试操作1
then 命令序列1
elif 条件测试操作2
then 命令序列2
else
命令序列3
fi
```
*为了节省时间,我统一在脚本文件中执行:*
```
chmod 700 XXX.sh
```
***练习1:判断目录是否存在***
存在不新建目录,不存在新建目录
```
[root@mmx ~]# clear
[root@mmx ~]# cat a.sh
#!/bin/bash
DIR="/root/nice"
if [ ! -d $DIR ]
then
mkdir -p $DIR
fi
[root@mmx ~]# ./a.sh
[root@mmx ~]# ls
anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures Videos
a.sh Downloads Music Public
Desktop happy.txt nice Templates
```
***练习2:判断主机在线情况***
```
[root@mmx ~]# cat b.sh
#!/bin/bash
ping -c 3 -i 0.01 -w 3 $1 &> /dev/null
if [ $? -eq 0 ]
then
echo "Host $1 is on-line"
else
echo "Host $1 is off-line"
fi
[root@mmx ~]# ./b.sh 192.168.0.1
Host 192.168.0.1 is on-line
[root@mmx ~]# ./b.sh 192.168.0.51
Host 192.168.0.51 is off-line
[root@mmx ~]#
```
***练习3:成绩判断(优秀,良好,及格,不及格,错误)***
```
[root@mmx ~]# cat c.sh
#!/bin/bash
read -p "请输入你的成绩:" GRADE
if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ]
then
echo " 成绩$GRADE良好 "
elif
[ $GRADE -ge 60 ] && [ $GRADE -le 85 ]
then
echo " 成绩$GRADE及格 "
elif
[ $GRADE -ge 0 ] && [ $GRADE -le 100 ]
then
echo " 成绩$GRADE不及格 "
else
echo "成绩$GRADE超出范围"
fi
[root@mmx ~]# ./c.sh
请输入你的成绩:1001
成绩1001超出范围
[root@mmx ~]# ./c.sh
请输入你的成绩:75
成绩75及格
[root@mmx ~]# ./c.sh
请输入你的成绩:30
成绩30不及格
```
## (2)**条件循环语句**
> for:确定次数循环
>
> while:不确定次数循环
for格式:
```
for 变量名 in 取值列表
do
命令序列
done
```
while格式:
```
while 条件测试语句
do
命令序列
done
```