三 shell程式設計 巢狀

2022-09-20 13:03:12 字數 1362 閱讀 4874

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號...