Shell指令碼應用 – for、while迴圈語句
透過 應用(二)學習到了if條件條件語句的使用方法等。 作為一種 程式語言,同樣了包含了迴圈,分支等其他程式控制結構,從而能夠輕鬆完成更加複雜、強大的功能。我們今天就來認識for、while、case語句的具體應用。 |
在實際工作中,經常會遇到某項任務需要多次執行的情況,而每次執行時僅僅是處理的物件不一樣,其他 相同。例如:根據通訊錄中的姓名列表建立系統賬號等情況。
當面對各種列表重複工作任務時,使用if語句已經不能滿足需要了,就需要使用到for語句。
使用for迴圈語句時,需要指定一個變數及可能的取值列表,針對不同的取值重複執行相同的 序列,知道變數值用完退出迴圈。
1)for迴圈語句的語法結構:
for 變數名 in 取值列表
do
命令序列
done
語句結構中,for語句的操作物件為使用者吧指定名稱的變數,並透過in關鍵字為該變數預先設定了一個取值列表,多個取值之間用空格進行分隔。位於do……done之間的命令序列稱為迴圈體,其中的執行語句需要應用變數以完成相應的任務。
2)for迴圈語句流程圖
3)for迴圈語句的使用場景
1. 迴圈次數未知;
2.完整遍歷整個取值列表。
要求:
1.根據姓名列表批次建立使用者;
2.使用者的初始密碼是“123456”
實施步驟:
[root@localhost ~]# vim /root/users.txt //新建一個取值列表 xiaozhang xiaoli xiaowang xiaosun [root@localhost ~]# vim useraddfor.sh //建立批次建立使用者的指令碼 #!/bin/bash ULIST=$(cat /root/users.txt) for UNAME in $ULIST do useradd $UNAME echo "123456" | passwd --stdin $UNAME &> /dev/null done [root@localhost ~]# sh useraddfor.sh //執行指令碼 [root@localhost ~]# tail -4 /etc/passwd //驗證效果 xiaozhang:x:1001:1001::/home/xiaozhang:/bin/bash xiaoli:x:1002:1002::/home/xiaoli:/bin/bash xiaowang:x:1003:1003::/home/xiaowang:/bin/bash xiaosun:x:1004:1004::/home/xiaosun:/bin/bash
注意:if語句、for語句及其他各種shell指令碼語句都是可以巢狀使用的。
for迴圈語句非常適用於列表物件無規律,且列表來源已固定的場合,而對於要求控制迴圈次數,操作物件按數字順序編號、按特定條件執行重複操作等情況,則更適合使用——while迴圈語句。
使用while迴圈語句是,可以根據特定的條件反覆執行一個命令序列,知道該條件不再滿足為止。在指令碼應用中,應該儘量避免出現死迴圈的情況,否則後邊的命令操作將無法執行。因此,迴圈體內的命令序列中應包括修改測試條件的語句,以便在適當的時候使測試條件不再成立,從而結束迴圈。
1)while迴圈語句的語法結構
while 條件測試操作
do
命令序列
done
2)while迴圈語句流程圖
使用while迴圈語句時,有兩個特殊的條件測試操作。即true(真)和false(假)。使用true作為條件時,表示條件永遠成立,迴圈體內的命令序列將無限執行下去,除非強制終止指令碼(或使用exit語句退出指令碼);反之若使用false作為條件,則迴圈體將不會執行。
3)while迴圈語句的使用場景
1.迴圈次數已知;
2.必須有一個可以控制迴圈變數的語句。
要求:
批次建立有規律編號的使用者
實施步驟:
[root@localhost ~]# vim useraddwhile.sh #!/bin/bash PREFIX="stu" i=1 while [ $i -le 10 ] do useradd ${PREFIX}$i echo "123456" | passwd --stdin ${PREFIX}$i &> /dev/null let i++ done [root@localhost ~]# sh useraddwhile.sh [root@localhost ~]# tail /etc/passwd stu1:x:1005:1005::/home/stu1:/bin/bash stu2:x:1006:1006::/home/stu2:/bin/bash stu3:x:1007:1007::/home/stu3:/bin/bash stu4:x:1008:1008::/home/stu4:/bin/bash stu5:x:1009:1009::/home/stu5:/bin/bash stu6:x:1010:1010::/home/stu6:/bin/bash stu7:x:1011:1011::/home/stu7:/bin/bash stu8:x:1012:1012::/home/stu8:/bin/bash stu9:x:1013:1013::/home/stu9:/bin/bash stu10:x:1014:1014::/home/stu10:/bin/bash
迴圈體內部,透過語句“let i++”(等同於i=expr $i + 1)來是變數i的值增加1,一直迴圈,直到滿足條件為止。
1)case語句的語法結構
case 變數值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
……
* )
預設命令序列
esac
2)case語句流程圖
使用case分支語句是,幾個值得注意的特點:
Shell指令碼應用(三)
3)case語句的使用場景
某個變數存在多種取值,需要對其中的每一種取值分別執行不同的命令序列,這種情況與多分支的if語句非常相似,只不過if語句需要判斷多個不同的條件,而case語句只是判斷一個變數的不同取值。
[root@localhost ~]# vim hitkey.sh #!/bin/bash read -p "請輸入一個字元,並按Enter鍵確認:" KEY case "$KEY" in [a-z]|[A-Z]) echo "你輸入的是字母 $KEY" ;; [0-9]) echo "你輸入的是數字 $KEY" ;; *) echo "你輸入的是非法字元 $KEY" esac [root@localhost ~]# sh hitkey.sh 請輸入一個字元,並按Enter鍵確認:1 你輸入的是數字 1 [root@localhost ~]# sh hitkey.sh 請輸入一個字元,並按Enter鍵確認:w 你輸入的是字母 w [root@localhost ~]# sh hitkey.sh 請輸入一個字元,並按Enter鍵確認:@ 你輸入的是非法字元 @
原文地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2657322/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Shell指令碼之for迴圈語句的應用指令碼
- Matlab的if語句switch語句for迴圈while迴圈語句練習MatlabWhile
- Java基礎 迴圈語句 for while do.....while語句JavaWhile
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-WHILE迴圈SQLWhile
- JavaScript 流程控制語句詳解:if語句、switch語句、while迴圈、for迴圈等JavaScriptWhile
- Object-C,迴圈語句for,while,do-whileObjectWhile
- Python基礎-While迴圈語句PythonWhile
- 實驗5 迴圈結構程式設計(while、do-while語句的應用)程式設計While
- 實驗5迴圈結構程式設計(while、do-while語句的應用)程式設計While
- Linux Shell指令碼程式設計while語句案例Linux指令碼程式設計While
- c語言中,while(1)語句使用break語句跳出迴圈C語言While
- shell指令碼之迴圈指令碼
- python04: while迴圈語句 break continue for in 迴圈PythonWhile
- 【js迴圈語句】for與while的區別JSWhile
- C語言——迴圈結構(for迴圈,while迴圈,do-while迴圈)C語言While
- Shell 指令碼語句指令碼
- shell死迴圈指令碼示例指令碼
- Python趣味入門5:迴圈語句whilePythonWhile
- shell指令碼while迴圈、read讀取控制檯輸入與函式指令碼While函式
- while迴圈以及do while迴圈While
- C#練習,應用for,while,do-while迴圈C#While
- 04 shell程式設計之迴圈語句程式設計
- C#程式設計基礎第七課:C#中的基本迴圈語句:while迴圈、do-while迴圈、for迴圈、foreach迴圈的使用C#程式設計While
- while迴圈While
- 在Linux中,shell指令碼中的條件語句和迴圈結構是什麼?Linux指令碼
- C語言程式設計學習中while迴圈和do……while迴圈C語言程式設計While
- TypeScript 迴圈語句TypeScript
- JavaScript for 迴圈語句JavaScript
- MySQL迴圈語句MySql
- Oracle迴圈語句Oracle
- [shell基礎]——if/for/while/until/case 語句While
- 實驗三:分別用for、while和do-while迴圈語句以及遞迴方法計算n!,並輸出算式While遞迴
- Java 可以採用什麼語句跳出迴圈語句Java
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-FOR迴圈SQL
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-基本迴圈(EXIT語句)SQL
- 用Java中for迴圈語句列印菱形Java
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-FOR迴圈-FOR迴圈中的索引SQL索引
- 使用while迴圈操作DML語句While