linux-shell編程11:shell腳本循環語句

循環語句應用

- 在日常工作中需要重複運行大量的指令,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]# 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章