一、IO裝置
IO是指資料的來源端與資料的目的端,分別稱為標準輸入、標準輸出、及標準錯誤輸出。
程式不必關心裝置的問題,無論是檔案、終端、磁帶機等。
在Linux預設情況下,會讀取標準輸入、寫入標準輸出,並將錯誤傳遞到標準錯誤輸出。預設情況下標準輸入、輸出、錯誤都是終端。
通過下面可知:
$ cat
input testing #使用者輸入
input testing #螢幕輸出
second testing #使用者輸入
second testing #螢幕輸出
在登入Linux系統時,預設將終端設為標準輸入、輸出、錯誤裝置。
二、重新導向與管道
重新導向:
更改預設的標準輸入、輸出、錯誤終端裝置。
以"<"來改變預設的輸入:program < file ,可將program的標準輸入更改為file
以">"來更改預設的輸出:cat file ,可將終端的標準輸出更改為file
">>"比較特殊,它是追加輸出。
例如:cat >> file
會將終端輸入追加到file檔案的最後,若file不存在,則會自動建立file檔案。
管道:
可以將兩個以上的正在執行中的程式銜接起來。
例如:tr -d '/r' < file.txt | sort > file2.txt
將file.txt中的換行刪除,再進行排序。並將結果作為file2.txt的輸入儲存檔案。
三、訪問shell指令碼的參數
shell中的參數指的是shell指令碼的命令列參數。在shell函數裡,它們同時是shell函數的參數。各參數都由整數命名。
當它們的個數超過9個時,使用{}括起來。例如:${10}
例如:寫一個簡單的Shell,返回類似條件名稱的當前串連的終端
$ cat who.sh
# /bin/sh
who -a | grep $1
$chmod x+ who.sh
./who.sh tty
返回終端名tty的串連資訊
四、指令碼跟蹤執行
在寫比較複雜的指令碼時,跟蹤指令碼執行過程,會有助於發現指令碼錯誤,提高編寫效率。
set -x 表示開啟跟蹤
set +x 表示停止跟蹤