shell 指令碼使用總結
目錄
3 在shell指令碼中實現try ... catch... 功能比較 && 和 || 的不同
1 重定向
1.1 輸出重定向
(1) >>, 〉 輸出重定向
輸出重定向即輸出不在終端上,而是輸出到檔案中去或其它
>>file 的意思是如果重定向的檔案不存在,則重新建立檔案,並將資訊在檔案的末尾插入; 如果檔案已經存在, 則直接在末尾插入
>file 的意思是如果重定向的檔案不存在,則重新建立檔案,並將資訊在檔案的末尾插入; 如果檔案已經存在, 則重建檔案後再插入
(2)<, << 輸入重定向 :
輸入重定向即輸入不從鍵盤讀入,而是從檔案輸入或其它
2 實現既定向輸出又列印在終端 ——tee ,命令
tee命令讀取標準輸入,把這些內容同時輸出到標準輸出和(多個)檔案中。
用法示例:
格式:tee file1
類似於>
輸出到標準輸出的同時,儲存到檔案file中。如果檔案不存在,則建立;如果已經存在,則覆蓋之。
格式:tee -a file1
類似於>>
輸出到標準輸出的同時,追加到檔案file中。如果檔案不存在,則建立;如果已經存在,就在末尾追加內容,而不是覆蓋。
格式:tee file1 file2
重定向到檔案file1和file2中,tee可以重定向到多個檔案。
3 在shell指令碼中實現try ... catch... 功能
比較 && 和 || 的不同
&& 的特點:
func1 && func2 func1 執行成功後才會func2
|| 的特點:
func1 || func2 func1 執行失敗後才會func2
因此, 通過以上的比較功能可以使用 || 實現try ... catch .... 功能。
4 shell 標準輸入輸出
在shell中,每個程序都和三個系統檔案相關聯:標準輸入stdin,標準輸出stdout和標準錯誤stderr,三個系統檔案的檔案描述符分別為0,1和2
使用如下:2>>log 將標準錯誤資訊重定向到檔案log中
5 shell 函式
格式如下:
func(){
echo "hello, world"
}
呼叫如下:
func
傳參:
func params1, params2
6 shell 輸出
echo 可以輸出到控制檯
例如:
echo "hello, world"
7 示例
使用以上功能實現一個可以記錄程式執行成功和報錯資訊的程式
#函式1
func1(){
create table tem(ip, int) #這條建表語句會報錯
}
#函式2
#func1 執行成功,則把執行成功的資訊輸出到log檔案中,並記錄執行日期
func2(){
date=`date "+%Y-%m-%d %H:%M:%S"` #獲取時間資訊
echo $date | tee -a log #將日期輸出到日誌 ,其中 | 的含義是前面的echo 的輸出 date,作為後面的tee的輸入
echo "sucess action" | tee -a log #將執行成功資訊輸出到日誌
}
func3(){
{
func1 2>tem #將函式的標準錯誤輸出重定向到一個臨時檔案中
} && {
func2
} ||{
var = $(cat tem) #從臨時檔案中讀取錯誤資訊
date=`date "+%Y-%m-%d %H:%M:%S"` #獲取執行資訊
echo $date | tee -a log #將日期輸出到日誌
echo $var | tee -a log #將執行錯誤資訊輸出到日誌
}
}
#執行func3
func3