中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Shell腳本中for循環、while循環及case分支語句怎么用

發布時間:2022-01-24 10:04:10 來源:億速云 閱讀:155 作者:iii 欄目:開發技術

本篇內容主要講解“Shell腳本中for循環、while循環及case分支語句怎么用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Shell腳本中for循環、while循環及case分支語句怎么用”吧!

for、while在多個編程語言中都涉及到,但是用法卻略有不同,這篇文章將和大家分享一下在shell中for循環、while循環及case分支語句。

使用for循環語句

在工作中,經常遇到某項任務需要多次執行,而每次執行僅僅是處理對象不一樣,其他命令都相同。使用簡單的if語句已經難以滿足要求,編寫全部代碼將困難重重,而for循環語句將很好的解決類似的問題

1. for語句的結構

使用for循環語句時,需要指定一個變量及可能的取值列表,針對每一個不同的取值重復執行相同的命令,直到變量值用完退出循環

案例1:根據姓名列表批量建立用戶

 [root@localhost ~]# vim /root/users.txt yang shu fan  [root@localhost ~]# vim uaddfor.sh #!/bin/bash ULIST=$(cat /root/users.txt) for UNAME in $ULIST do     useradd $UNAME     echo "123456" | passwd --stdin $UNAME done  [root@localhost ~]# sh uaddfor.sh [root@localhost ~]# tail -3 /etc/passwd yang:x:1011:1011::/home/chenye:/bin/bash shu:x:1012:1012::/home/dengchao:/bin/bash fan:x:1013:1013::/home/zhangjie:/bin/bash

案例2:根據IP地址列表檢測主機狀態

 [root@localhost ~]# vim /root/ipadds.txt 192.168.1.10 192.168.1.11 192.168.1.12  [root@localhost ~]# vim chkhosts.sh #!/bin/bash HLIST=$(cat /root/ipadds.txt) for IP in $HLIST do     ping -c 3 -i 0.2 -W 3 $IP &> /dev/null     if [ $? -eq 0 ]       then         echo "Host $IP is up."     else         echo "Host $IP is down."     fi done  [root@localhost ~]# sh chkhosts.sh Host 192.168.1.10 is up. Host 192.168.1.11 is down. Host 192.168.1.12 is up.

使用while循環語句

for語句適用于列表對象無規律,且列表來源以固定的場合。而對于要求控制循環次數、操作對象按數字順序編號、按特定的條件重復操作等情況,則更適合于while循環語句

1. while語句的結構

使用while循環語句時,可以根據特定的條件反復執行一個命令序列,直到該條件不在滿足為止

案例1:批量添加規律編號的用戶(“let i++”等同于“i=expr $i + 1”)

 [root@localhost ~]# vim uaddwhile.sh #!/bin/bash PREFIX="ysf" i=1 while [ $i -le 20 ] do     useradd ${PREFIX}$i     echo "123456" | passwd --stdin ${PREFIX}$i &> /dev/null     let i++ done  [root@localhost ~]# sh uaddwhile.sh [root@localhost ~]# grep "ysf" /etc/passwd | tail -3 ysf18:x:1028:1028::/home/stu18:/bin/bash ysf19:x:1029:1029::/home/stu19:/bin/bash ysf20:x:1030:1030::/home/stu20:/bin/bash

案例2:猜價格游戲

案例要求如下:腳本預先隨機生成一個價格數目(1-999)作為實際價格,判斷用戶給出的價格是否正確,給出相應的提示后再次猜測。直到猜對價格為止,輸出用戶共猜測的次數、實際價格

設計思路:通過環境變量獲得一個小于2的16次方隨機整數,計算與1000的余數即可獲得0-999的隨機價格;反復猜測可通過true作為測試條件的while循環實現

 [root@localhost ~]# vim game.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 "你總共猜測了 $TIMES 次"         exit 0     elif [ $INT -gt $PRICE ] ; then         echo "太高了!"     else         echo "太低了!"     fi done  [root@localhost ~]# sh pricegame.sh 商品實際價格為0-999之間,猜猜看是多少? 請輸入你猜測的價格數目:500 太高了! 請輸入你猜測的價格數目:250 太低了! 請輸入你猜測的價格數目:375 太高了! 請輸入你猜測的價格數目:280 太高了! 請輸入你猜測的價格數目:265 太高了! 請輸入你猜測的價格數目:253 恭喜你答對了,實際價格是 253 你總共猜測了 6 次

使用case分支語句

case語句主要適用于以下情況:某個變量存在多種取值,需要對其中的每一種取值分別執行不同的命令序列。與多分支if語句相識,只是if語句需要判斷多個不同的條件,而case只是判斷一個變量的不同取值

1. case語句的結構

案例1:檢測用戶輸入的字符類型

 [root@localhost ~]# cat hitkey.sh #!/bin/bash read -p "請輸入一個字符,并按Enter鍵確認:" KEY case "$KEY" in   [a-z]|[A-Z])       echo "您輸入的是 字母。"       ;;   [0-9])       echo "您輸入的是 數字。"       ;;   *)       echo "您輸入的是 空格、功能鍵或其他控制字符。" esac  [root@localhost ~]# sh hitkey.sh 請輸入一個字符,并按Enter鍵確認:k 您輸入的是 字母 k 。 [root@localhost ~]# sh hitkey.sh 請輸入一個字符,并按Enter鍵確認:8 您輸入的是 數字 8 。 [root@localhost ~]# sh hitkey.sh 請輸入一個字符,并按Enter鍵確認:[19~ 您輸入的是 空格、功能鍵或其他控制字符。

案例2:編寫系統服務腳本(測試)

 [root@localhost ~]# vim /etc/init.d/myprog #!/bin/bash # chkconfig: - 90 10 # description: Startup script for sleep Server case "$1" in start)     ... 正在啟動XX服務     ;; stop)     ... 正在停止XX服務     ;; restart)     $0 stop     $0 start     ;; *)      echo "用法: $0 {start|stop|restart}" esac  [root@localhost ~]# chkconfig --add myprog [root@localhost ~]# chkconfig --list myprog myprog          0:關閉  1:關閉  2:關閉  3:關閉  4:關閉  5:關閉  6:關閉  [root@localhost ~]# /etc/init.d/myprog start 正在啟動sleep服務... OK [root@localhost ~]# /etc/init.d/myprog stop 正在停止sleep服務... OK [root@localhost ~]# /etc/init.d/myprog reload 用法: ./myprog {start|stop|restart} [root@localhost ~]# /etc/init.d/myprog restart 正在停止sleep服務... OK 正在啟動sleep服務... OK

到此,相信大家對“Shell腳本中for循環、while循環及case分支語句怎么用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

怀来县| 多伦县| 岫岩| 桃江县| 中牟县| 巴彦淖尔市| 义乌市| 康乐县| 台州市| 上林县| 松原市| 三门峡市| 定州市| 沂源县| 福泉市| 阿克陶县| 鹤壁市| 绥宁县| 水富县| 页游| 保定市| 汾西县| 嵩明县| 渭源县| 张家川| 邵阳市| 上高县| 庄浪县| 宜城市| 杨浦区| 乐亭县| 子洲县| 垦利县| 时尚| 怀远县| 两当县| 沾化县| 三原县| 海宁市| 丹棱县| 成安县|