1.巢狀
就是if裡套if
案例
2.除錯指令碼
除錯指令碼的方法:
sh -n 02.sh 僅除錯指令碼中的語法錯誤
sh -vx 02.sh 以除錯的方式,查詢整個執行過程
如果使用-vx,可以先注釋一部分,讓程式簡單化
3.注意
· 表示條件測試。注意這裡的空格很重要,要住在'['後面和']'前面都必須要有空格。
· 在shell中,then和if是分開的語句。如果要在同一行裡輸入,則需要用分號將他們隔開。
· 注意if判斷中對於變數的處理,需要加引號,一面一些不必要的錯誤。沒有加雙引號會在一些空格等字串變數判斷的時候產生錯誤,比如[-n "$var"] ,如果var為空會出錯。
· 判斷是不支援浮點型的。
· 如果只單獨使用》或者《號,系統會認為是輸出或者輸入重定向,雖然結果顯示正確,但是其實是錯誤的,因為要對這些符號進行轉義。
· 預設,執行if語句中的命令,所產生的錯誤資訊。仍然出現在指令碼的輸出結果中
· 使用-z或者-n來檢查長度的時候,沒有定義的變數也為0
· 空變數和沒有初始化的變數可能會對shell指令碼測試產生災難性的形象,因此在不確定變數內容的時候,在測試號前使用-n或者-z測試一下
· $?變數包含了之前執行命令的退出狀態(最近完成的前台程式)(可以用於檢測退出狀態)
4.模式匹配case
前言shell程式設計中if和case都是用來做流控的。
案例1簡單的模式匹配
邀請使用者輸入待刪除使用者名稱。詢問使用者,圈定要繼續刪除嗎yes/no:
if寫法
case寫法
case 變數 in
模式1)
命令序列1
模式1)
命令序列1
模式1)
命令序列1
無匹配後命令序列
shell程式設計筆記(三)
while迴圈 語法 while 表示式 do操作 done 只要while表示式成立,do和done之間的操作就一直會進行。until迴圈 語法 until 表示式 do操作 done 重複do和done之間的操作直到表示式成立為止。例 test until add from 1 to 100 t...
shell程式設計三 變數
在shell,變數沒有型別,也不需要在使用之前先宣告,直接賦值就可以了。在shell中,變數的值都是字串,不管你在賦值時使用採用了引號。變數可以使用 號來賦值,用法如下 var valuevar是變數名,value是變數的值,如果value中包含了空白字元 例如空格 那麼value必須使用引號 單引...
Shell指令碼程式設計(三)
shell變數 3 預定義變數 shell程式設計內事先定義了一些變數,使用者只能使用這些變數而不能重新定義它們。所有的預定義變數都由 符號和另乙個符號構成,常用的預定義變數如下 命令列引數的個數 所有命令列引數 不計 0,同 前乙個命令的退出狀態 所有命令列引數 不計 0,同 正在執行的程序id號...