举例:
判断/media/cdrom 文件是否存在,若存在就结束条件判断和整个 Shell 脚本,反之则去建立这个目录:linux
[root@linuxprobe ~]# vim mkcdrom.sh #!/bin/bash DIR="/media/cdrom" if [ ! -e $DIR ] then mkdir -p $DIR fi
在这里插入图片描述
举例:
使用双分支的 if 条件语句来验证某台主机是否在线,而后根据返回值的结果,要么显示主机在线信息,要么显示主机不在线信息。web
补充ping命令
ping 命令来测试与对方
主机的网络联通性,而 Linux 系统中的 ping 命令不像 Windows 同样尝试 4 次就结束,所以为了不用户等待时间过长,须要经过-c 参数来规定尝试的次数,并使用-i 参数定义每一个数据包的发送间隔,以及使用-W 参数定义等待超时时间。shell
[root@linuxprobe ~]# vim chkhost.sh #!/bin/bash ping -c 3 -i 0.2 -W 3 $1 &> /dev/null if [ $? -eq 0 ] then echo "Host $1 is On-line." else echo "Host $1 is Off-line." fi
测试:vim
[root@linuxprobe ~]# bash chkhost.sh 192.168.10.10 Host 192.168.10.10 is On-line. [root@linuxprobe ~]# bash chkhost.sh 192.168.10.20 Host 192.168.10.20 is Off-line.
举例:
使用多分支的 if 条件语句来判断用户输入的分数在哪一个成绩区间内,而后输出如Excellent、Pass、Fail 等提示信息。bash
补充 read 命令
read 是用来读取用户输入信息的命令,可以把接收到的用户输入信息赋值给后面的指定变量,-p 参数用于向用户显示必定的提示信
息。网络
[root@linuxprobe ~]# vim chkscore.sh #!/bin/bash read -p "Enter your score(0-100):" GRADE if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ] ; then echo "$GRADE is Excellent" elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ] ; then echo "$GRADE is Pass" else echo "$GRADE is Fail" fi [root@linuxprobe ~]# bash chkscore.sh Enter your score(0-100):88 88 is Excellent [root@linuxprobe ~]# bash chkscore.sh Enter your score(0-100):80 80 is Pass
测试:svg
[root@linuxprobe ~]# bash chkscore.sh Enter your score(0-100):30 30 is Fail [root@linuxprobe ~]# bash chkscore.sh Enter your score(0-100):200 200 is Fail
for 循环语句容许脚本一次性读取多个信息,而后逐一对信息进行操做处理,当要处理的数据有范围时,使用for 循环语句再适合不过了。
举例: 批量建立用户
使用 for 循环语句从列表文件中读取多个用户名,而后为其逐一建立用户帐户并设置密码。首先建立用户名称的列表文件 users.txt,每一个用户名称单独一行测试
vim users.txt andy barry carl duke eric george
编写Example.sh脚本3d
vim Example.sh #!/bin/bash read -p "Enter The Users Password : " PASSWD for UNAME in `cat users.txt` do id $UNAME &> /dev/null if [ $? -eq 0 ] then echo "Already exists" else useradd $UNAME &> /dev/null echo "$PASSWD" | passwd --stdin $UNAME &> /dev/null if [ $? -eq 0 ] then echo "$UNAME , Create success" else echo "$UNAME , Create failure" fi fi done
执行完第一次 显示建立成功,再执行一下,显示已经存在,表示运行成功。
实际执行状况以下:
code
while 循环语句经过判断条件测试的真假来决定是否继续执行命令,若条件为真就继续执行,为假就结束循环。
举例: 猜大小
使用$RANDOM 变量来调取出一个随机的数值(范围为 0~32767),
将这个随机数对 1000 进行取余操做,并使用 expr 命令取得其结果,再用这个数值与用户经过 read命令输入的数值进行比较判断。
vim Guess.sh #!/bin/bash PRICE=$(expr $RANDOM % 1000) TIMES=0 echo "商品实际价格为 0-999 之间,猜猜看是多少?" while true do read -p "请输入您猜想的价格数目:" INT let TIMES++ if [ $INT -eq $PRICE ] ; then echo "恭喜您答对了,实际价格是 $PRICE" echo "您总共猜 g $TIMES 次" exit 0 elif [ $INT -gt $PRICE ] ; then echo "过高了!" else echo "过低了!" fi done
注意
示例: 判断输入字符类型
vim Checkkeys.sh #!/bin/bash read -p "请输入一个字符,并按 Enter 键确认:" KEY case "$KEY" in [a-z]|[A-Z]) echo "您输入的是 字母。" ;; [0-9]) echo "您输入的是 数字。" ;; *) echo "您输入的是 空格、功能键或其余控制字符。" esac
测试结果:
break与continue: 关键字 break:提早结束循环(即想跳出循环) 关键字continue:结束当次循环,进行下一次循环