1. 程式人生 > >shell 指令碼使用總結

shell 指令碼使用總結

目錄

 

1 重定向

2 實現既定向輸出又列印在終端 ——tee ,命令

3  在shell指令碼中實現try ... catch... 功能比較 &&  和 || 的不同

4 shell 標準輸入輸出

5 shell 函式

6 shell 輸出

7 示例


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