1.if选择结构->单分支(只对一种情况做操作)
/条件成立 then 命令序列
if 条件测试 -->| fi 结束判断
\条件不成立
判断挂载点目录,若不存在则创建
#!/bin/bash
MOUNT_DIR="/media/cdrom"
if [! -d $MOUNT_DIR]
then
mkdir -p $MOUNT_DIR
fi
2.if选择结构->双分支(对两种情况都做操作)
/条件成立 then 命令序列1
if 条件测试-->| fi 结束判断
\条件不成立 else 命令序列2
检测并判断指定主机是否可ping通
#!/bin/bash
# 发三个包,间隔0.2秒发一次,超时设置三秒,屏蔽输出
ping -c 3 -i 0.2 -W 3 $1 &> /dev/null
if [ $? -eq 0 ];then
echo "Host $1 is up."
else
echo "Host $1 is down."
fi
3.if选择结构->多分支
针对多个条件分别执行不同的操作
if 条件测试1
then
命令序列1
elif 条件测试2
then
命令序列2
else 命令序列n
fi
4.for循环结构
应用示例————批量添加用户(名称无规律)
# cat uaddfor.sh
#!/bin/bash
ULIST=$(cat /root/users.txt)
for UNAME in $ULIST
do
useradd $UNAME
echo "123456" | passwd --stdin $UNAME
done
# tail -5/etc/passwd
5.C语言风格的for循环
通过变量控制,条件成立时循环
步长可控次数
for ((初值;条件;步长控制))
do
命令序列
done
# cat cfor.sh
#!/bin/bash
for((i=1;i<=5;i+=2))
do
echo $i
done
6.while循环
/条件成立 do 命令序列
while 条件测试-->|
\条件不成立 done 结束循环
批量添加用户(名称有规律)
# cat uaddwhile.sh
#!/bin/bash
PREFIX="tuser";i=1
while [ $i -le 5 ]
do
useradd ${PREFIX}$i
echo "123456" | passwd --stdin ${PREFIX}$i &>/dev/null
let i++ //递增控制,避免死循环
done
7.util循环结构(直到型循环)
/条件不成立 --> do 命令序列
until 条件测试-->|
\条件成立 --> done结束循环
if+while综合示例(猜价格游戏:价格随机生成,猜中后退出脚本,并给出猜测次数)
#!/bin/bash
PRICE=$[RANDOM%2000+1]
TIMES=0
echo "商品实际价格为1-2000之间,猜猜看是多少?"
while true
do
read -p "请输入你猜测的价格数目:" X
let TIMES++
if [ $X -eq $PRICE ];then
echo "恭喜你答对了,实际价格是 $PRICE"
echo "你总共猜测了 $TIMES 次"
exit 0
elif [ $X -gt $PRICE ];then
echo "太高了!"
else
echo "太低了!"
fi
done