close

按此前往linux完整教學目錄

 

 

10. 標準輸入與輸出:

在此先介紹三個概念,之後介紹資料流重導向:

(1) 標準輸入(standard input , stdin):指的是將資料輸出給檔案或程式。最常見的例子,是利用read命令要求使用者輸入資訊。

(2) 標準輸出(standard output , stdout):當執行一個執行檔,若成功執行,會在螢幕上輸出的成功執行後的訊息。這就叫標準輸出。

(3) 標準錯誤輸出(standard error output , stderr):當執行一個執行檔,若執行失敗,會在螢幕上輸出的執行失敗後的訊息。這就叫標準錯誤輸出。

(4) 資料流重導向(data stream redirection):所謂資料流重導向,對於輸出而言,是將原本該顯示在螢幕上的輸出訊息,給存放到檔案裡。對於輸入而言,是將輸入之訊息的來源,由「使用者親手從鍵盤輸入」改為「從檔案輸入」。

(4-1) 標準輸出的重導向:

利用:命令式 1> 檔案 ,若命令式在執行後回傳成功執行的訊息,則將此訊息存在檔案內,複寫該檔案

利用:命令式 1>> 檔案 ,若命令式在執行後回傳成功執行的訊息,則將此訊息存在檔案內,添加在該檔案的末尾。

(4-2) 標準輸出的重導向:

利用:命令式 2> 檔案 ,若命令式在執行後回傳執行失敗的訊息,則將此訊息存在檔案內,複寫該檔案

利用:命令式 2>> 檔案 ,若命令式在執行後回傳執行失敗的訊息,則將此訊息存在檔案內,添加在該檔案的末尾。

(4-1)的方法,只會在命令式成功執行時才有效,而(4-2)的方法,只會在命令式執行失敗才有效。而往往我們在執行命令時,並無法事先預料其執行成功或失敗,故(4-1)(4-2)的方法必須和著一起用。

如:命令式 1>> 檔案一 2> 檔案二,若命令式在執行後回傳成功執行的訊息,則將此訊息存在檔案一內,添加在檔案一的末尾。若命令式在執行後回傳執行失敗的訊息,則將此訊息存在檔案二內,複寫該檔案二

如果想把執行成功和失敗的訊息都放在同一個檔案內,也可以用:命令式 &> 檔案。不過這種寫法只是能訊息覆寫在檔案裡,不能用添寫的方式。

 (4-3) 標準輸入的重導向:

利用:命令式 < 檔案,可以將檔案的內容,作為執行命令式時所需的輸入。譬如,今有一個shell script檔,其名為tt.sh,其內容是:

read -p "who are you?" who

read -p "how old are you?" age

echo "you are "$who" , "$age" years ago."

原本在執行tt.sh的時候,要手動輸入變數whoage,利用輸入重導向的方法,可以讓tt.sh使用檔案中的資料作為輸入。即是寫另一檔,其名為person1,其內容是:

weiwei

18

在命令列輸入:sh tt.sh < person1

不用手動輸入變數,即顯示:you are weiwei , 18 years ago.

person1檔案中,一行資料就相當一個變數值。

尚有命令式 << 關鍵字,可連續輸入變數值,直到輸入關鍵字之後,才停止輸入。

註:上述的命令式,實際上可以是任何執行檔名。不限於命令執行檔。

 

 

上一篇:bash 進站顯示與登入顯示

下一篇:bash 問號變數

arrow
arrow

    埃伯 發表在 痞客邦 留言(0) 人氣()