shell腳本
規範的shell腳本的一般組成。
#!環境聲明
重定向出輸出:
>:隻收集前面指令的正确輸出
<:重定向輸入
>:覆寫
>>:追加
2>:隻收集前面指令的錯誤輸出
&>:收集前面指令的錯誤與正确的輸出
>2&:将錯誤的變成正确的輸出
>&2:将正确的變為錯誤的輸出
/dev/null 黑洞路徑
變量:以不變的名稱存放的可能會變化的值。
變量=變化的值
使用變量:$變量名
注意:1.若指定的變量已存在,相當于為此變量重新指派。
2.等号兩邊不要有空格。
3.變量名不能以數字開頭,不要使用關鍵字元。
檢視變量:echo $變量名
變量的種類:
1.位置變量 ($1 $2......)
在執行腳本時提供的指令參數(非互動傳值)
2.預定義變量
用來儲存腳本程式的執行資訊
直接使用,不能直接為這些變量指派。
3.環境變量
pwd、USERD、HOME、SHELL
sh和bash 開啟一個子程序
export 全局模式下的變量建立
export x=123
export -n 取消全局變量
export SCHOOL 釋出已定義的變量
read -p "提示資訊" 變量名
-p:可選
-t:可指定逾時秒數
可以産生互動,将鍵盤輸入的内容指派給變量
stty -echo 關閉回顯(不顯示字幕)
stty echo 打開回顯
$$:目前運作程序的PID号
$#:已加載的位置變量的個數
$*:所有位置變量的值
$?:指令執行後的判斷,0正常,非0異常
$0:目前所在的程序或腳本名
$!:查詢最後一個程序的PID
dirname $0,擷取目前Shell程式的路徑
cd
dirname $0
,進入目前Shell程式的目錄
常用的測試項
檢測檔案狀态:
-e:文檔存在為真
-d:目錄存在為真
-f: 檔案存在為真
-r:文檔有讀權限為真
-w:文檔有寫權限為真
-x:文檔有執行權限為真
比較整數大小
-gt:大于
-ge:大于等于
-eq:等于
-ne:不等于
-lt:小于
-le:小于等于
字元串比較
==:相等
!=:不相等
區分三種定界符
雙引号"":以$引用其他變量
單引号'':把特殊字元變為普通字元輸出
反撇号``:隻輸出指令的輸出結果
&& 邏輯與,條件都要成立 (-a)
|| 邏輯或,隻需條件成立其中一個(-o)
!-n或-z檢查變量的值是否為空值
-n或!-z檢查變量的值是否為非空值