2012-11-30 89 views
1

我有2個文件:test和input1。 以下是我的「測試」文件:在Linux中重定向輸入

echo $1 $2 

改變輸出作品,當我在寫終端:

./test foo bar > input1 

「FOO條」被寫入輸入1串。 然而,當我寫在終端:

./test < input1 

所有打印在該終端是跳過的行。

任何想法爲什麼「富酒吧」沒有打印到終端?

回答

0

這是因爲測試不會回標準輸入,它相呼應的命令參數

$1$2代表命令行上的第一個和第二個參數,它們是測試回聲。

的小於(「<」)符號重定向標準輸入(默認情況下,在一個交互式shell控制檯),並要重定向發送到測試標準輸入來自輸入1,但測試甚至沒有看標準輸入,它只看命令行參數。

爲了讓殼更像你期待,你必須採取的輸入1內容並把它傳遞給測試命令參數。

或許,這就是你想要的結果:

./test $(cat input1) 
+0

好點。那麼我怎麼才能讓它迴應標準輸入? – tmldwn

+0

我已更新回覆以回答這個新問題。 – danorton

0

做你想做什麼,你應該做的:

./test `cat input1` 

這種方式,輸入1的內容將被傳遞到命令的參數,而不是標準輸入。

假設輸入1的內容是:

a b c 

這將是與調用腳本,因爲這:

./test a b c 

裏面你的腳本,你會收到一個,B和C變量:

$# = 3 
$1 = 'a' 
$2 = 'b' 
$3 = 'c' 

如何過,想象一下你要使用輸入1作爲SCR內部標準輸入IPT。所以,你會打電話給你這樣的腳本:

./test < input1 

和你的腳本里面,假設要輸入1的內容傳遞給grep。你會做這樣的事情:

grep b <1 

這將搜索在輸入1文件中的字符串「B」。

要看到更多的例子,看看這個頁面: http://www.mathinfo.u-picardie.fr/asch/f/MeCS/courseware/users/help/general/unix/redirection.html

+0

那麼,一個腳本的例子將會打印<操作符重定向到屏幕的輸入? – tmldwn

+0

爲了澄清 - 我正在試驗Linux中的重定向,我想編寫一個簡單的腳本來適當地從文件中獲取輸入。 – tmldwn

0

輸入可在bash被重定向如下(我還是新來的Linux):

cat <& 0

這裏, 0,代表Console Input,而1將代表Console Output,而2代表Console Error Output