循環語句應用
- 在日常工作中需要重複運行大量的指令,shell提供了for,while,until,select循環語句以實現特定環境下特定指令的反覆利用
- 每次運行命令序列時都要對條件進行過濾,滿足條件纔可執行
for循環
#語法格式一:
for 變量 in 值1 值2 ……值N
do
命令序列
done
#變量通過賦值in裏面的值,多個賦值用空格隔開
#語法格式2:
for ((初始變量值;結束循環條件;運算))
do
命令序列
done
for循環案例
#給多個客戶批量發送郵件
mail -s ”標題“ [email protected] < /neirong
#!/bin/bash
DOMAIN=163.com
for MAIL_USER in dana dahuang dalv
do
mail -s "LOG" $MAIL_USER@$DOMAIN < /var/log/messages
echo "$MAIL_USER 郵件發送成功"
done
#利用for循環打印九九乘法表
#!/bin/bash
for i in {1..9}
do
for ((j=1;j<=i;j++))
do
printf "%-8s" $j*$i=$((j*i))
done
echo
done
while循環語句
語法格式一:
while [條件]
do
命令序列
done
語法格式2
while read -r line
do
命令序列
done < file
#通過read命令每次讀取一行文件,文件內容有多少行,while循環多少次
while循環練習
#批量添加20個用戶,用戶名爲 TLN,N爲1-20編號
[root@server0 programe]# cat add_user.sh
#!/bin/bash
# Add twenty users with while
NUM=1
while [ $NUM -le 20 ]
do
#userdel -r TL${NUM} #刪除用戶時,注意添加-r選項
useradd TL${NUM}
echo TL${NUM}“創建成功”
ID=`id TL${NUM}`
echo TL${NUM}"用戶的UID號爲"${ID}
NUM=$((NUM+1))
done
[root@server0 programe]#
#打印網卡配置文件
[root@server0 programe]# cat read_nic.sh
#!/bin/bash
#read nic file
FILE=/etc/sysconfig/network-scripts/ifcfg-eno16777728
while read -r line
do
echo $line
done < $FILE
[root@server0 programe]#
#無限循環菜單,根據用戶選擇實現不同的菜單功能,最後退出腳本
[root@server0 programe]# cat new_menu.sh
#!/bin/bash
while true #無限循環
do
clear
echo "…………………………………………………………………………………………"
echo "1.Display CPU info:"
echo "2.Display system load:"
echo "3.Display Mem and swap info:"
echo "4.Display filesytem mount info:"
echo "5.Exit Program"
echo "…………………………………………………………………………………………"
read -p "plese select your iterm(1-5):" U_SELECT
case $U_SELECT in
1)
echo $(cat /proc/cpuinfo)
read -p "plese enter to continue:"
;;
2)
echo $(uptime)
read -p "plese enter to continue:"
;;
3)
echo $(free)
read -p "plese enter to continue:"
;;
4)
echo $(df -hT)
read -p "plese enter to continue:"
;;
5)
exit 0
;;
*)
read -p "plese select 1-5,Press Enter to continue:"
esac
done
[root@server0 programe]#
until
語法格式
until [條件]
do
命令序列
done
#該語句根據條件判斷循環是否繼續,until代表的是知道滿足條件時循環結束
#批量刪除用戶
[root@server0 programe]# cat del_user.sh
#!/bin/bash
#delete user
NUM=20
until [ $NUM -eq 0 ]
do
userdel -r TL${NUM}
echo "user TL${NUM} delete ok!"
NUM=$((NUM-1))
done
[root@server0 programe]#
select語句
select用來生成菜單工具
select循環與for循環格式相同
#select生成籍貫提問菜單,並通過echo回顯
[root@server0 programe]# cat select_p.sh
#!/bin/bash
echo "Where are you from?"
select var in 'BJ' 'CD' 'DH' 'CQ' 'TJ' 'LZ' 'NY'
do
break
done
echo "You are from $var"
[root@server0 programe]#