Linux shell迴圈

weixin_34279184發表於2016-11-26
條件測試
格式    test condition    或    [ condition ]    使用方括號時,要注意在條件兩邊加上空格,如果有操作符,運算子之間也必須有空格
測試狀態:測試的結果可以用$?的值來判斷,0表示成功,其他為失敗
--檔案狀態測試
-e  判斷檔案是否存在
-d 判斷目錄是否存在 -f 正規檔案(是不是普通檔案) -L 符號連結 -r 可讀 -s 檔案長度大於0、非空 -w 可寫 -u 檔案有suid位設定 -x 可執行 --邏輯測試 -a 邏輯與,操作符兩邊均為真,結果為真,否則為假 -o 邏輯或,操作符兩邊一邊為真,結果為真,否則為假 ! 邏輯否,條件為假,結果為真 --字串測試 = 兩個字串相等 != 兩個字串不等 -z 字串為空 -n 字串非空 --數字測試 -eq 兩個數字相等 -ge 數字a大於等於數字b -gt 數字a大於數字b -le 數字a小於等於數字b -lt 數字a小於數字b -ne 數字a不等於數字b

 

expr
--數字運算
--加法運算:expr 10 + 10
--減法運算:expr 20 - 10
--加法運算:expr 10 / 5
--乘法運算:expr 10 \* 5
--注意:expr 10 + 10 ;10(空格)+10(空格),數字與運算子之間必須使用空格
--如果是非數字參加運算會報錯誤,利用此點可以用來測試數字格式。
--例子:expr 10 + a 檢視是否報錯,測試a是否是數字
if then else 語句
語法1
if 條件
then 命令
else 命令
fi
注意if語句必須以fi終止


語法2
if 條件1;(";"可以加也可以不加,規則是加上)
then 命令1
elif 條件2
then 命令2
else 命令3
fi

注意:if then else命令,if和then如果在同一行上,必須加";"分號,不在同一行上,可以不加

case
case多選擇語句格式
casein
模式1)
    命令1
    ;;
模式2)
    命令2
    ;;
esac
注意點:
①:case取值後面必須為單詞in:每一模式必須以右括號結束
②:取值可以為變數或常數。匹配發現取值符合某一模式後,氣候的所有命令開始執行,直到;;
③:模式匹配:*表示任意字元;?表示任意單字元;[...]表示範圍中任意字元
for迴圈
語法格式
for 變數名 in 列表
do
    命令1
    命令2
done
1.當變數值在列表裡,for迴圈即依次執行所有命令,使用變數名訪問列表中取值
2.命令可以為任何有效的shell命令和語句。變數名為任意單詞
3.in列表用法是可選擇,如果不用它,for迴圈使用命令列的位置引數
4.in列表可以包含替換、字串和檔名

until迴圈
語法格式
until    條件
do
    命令1
    命令2
done
條件可以為任意測試條件,測試發生在迴圈末尾,因此迴圈至少執行一次
while迴圈
語法格式
while 命令(可以是一個命令也可以是多個)
do
    命令1
    命令2
done
注意:在while和do之間雖然通常是一個命令,但可以放幾個命令。
如果whil和do之間一個命令都沒有必須加上":"

 

break [n]
--退出迴圈
--如果是在一個嵌入迴圈裡,可以指定n來跳出迴圈個數

continue
--跳出本次迴圈(不會跳出迴圈,跟C語言相同)

 

相關文章