3、文件測試和bash中的變量類型+shift用法
exit(可以提前結束腳本的命令)
exit:退出腳本進程
那我們說,任何一個命令執行完了,都會有一個執行結果和執行狀態結果.
exit除了可以退出腳本不執行後面的語句之後,還可以用來定義執行狀態結果是什麽的?(正確或者錯誤)我們完全可以自定義
自定義:
0表示正確
1-255表示錯誤
只要你的腳本遇到exit命令,就直接退出腳本,不會再執行後面的命令了,如果exit沒有定義,也就是後面為空,就返回的執行狀態結果為最後執行那一條命令的狀態返回結果。
第一種是:
1.整數測試:(一般是雙目操作)
-gt大於
-le小於等於
-ne不等於
-eq等於
-ge大於等於
使用了上面的話,就必須要加中括號了
只有在使用上面的整數測試的比較值的時候,才會加中括號
bash中常用的條件測試有三種:
測試方法:
[ experssion ] 命令測試法:bash的命令
[[ experssion ]] 關鍵字測試法:bash的關鍵字
test expression
實例如下截圖
if默認後面的就是一個判斷是真或者是假,如果是0就是真,非0就是假,所以要學會用,如果你後面給的是一個執行結果的話,那樣是不正確的方式
2.文件測試(這個也需要加中括號的)
測試文件是否存在
-e FILE:測試文件是否存在
-f File:測試文件是否為普通文件
-d FILE:測試路徑是否為目錄
-w FILE:測試當前用戶對測試文件是否用執行權限;
-x FILE:測試當前用戶對測試文件是否用執行權限;
用法:
如果文件存在,就是為真.
而!就是為假,整個條件就是假,就不執行條件內的了
圓整:意思為丟棄小數點後的內容
之前說了if兩種條件語句
當然會有雙分支不能滿足的,所以就會有多分支的if語句
bash有一個專門測試腳本是否有語法錯誤
bash -n filetest.sh 這樣來測試
測試結果不能作為一個依據,只是一個模糊;因為測試通過了只是說語法沒有錯誤,但是內容或者邏輯可能有錯誤
bash -x filetest.sh 可以明確清楚的看到腳本的信息每一行是否出現錯誤(後期我們這裏經常會用到,-x是會執行腳本的)
練習
馬哥寫的是下面這個
意思是exit沒有指定狀態碼,像沒有指定0,1-255 ,他就會根據腳本最後一條命令確定退出的狀態碼的
bash變量的類型
作用域
本地變量(比本地變量還要小的:局部變量):本shell
環境變量:本shell和子shell
位置變量:$1,$2...
特殊變量:$?
如果在腳本中引用作用對象,其實,位置變量就是幹這個事情的
位置變量
這裏的$1,可以用命令來傳遞給他
特殊變量:
$?:上一條命令的退出狀態碼
$#:參數的個數(如果必須讓腳本後面加參數,就可以用這個$#來判斷)
[ $# -gt 0 ] && echo "the shell is not need parameter" && exit 1
$ :參數列表(腳本文件後面的參數列出來)
$@ :列出參數的列表(和$還是有區別的)
我們還有一個和位置變量一起來使用的,叫shift
shift(輪換,輪替的)
每一次shift就可以T剔出去一個$(默認是剔除一個的)
+n就可以T出n個$ ------------這就是輪替
避免一個shell腳本中多個位置變量,可以T出去,重復利用$但是又實現不是同一個參數
練習2
3、文件測試和bash中的變量類型+shift用法