我有2個文件:test和input1。 以下是我的「測試」文件:在Linux中重定向輸入
echo $1 $2
改變輸出作品,當我在寫終端:
./test foo bar > input1
「FOO條」被寫入輸入1串。 然而,當我寫在終端:
./test < input1
所有打印在該終端是跳過的行。
任何想法爲什麼「富酒吧」沒有打印到終端?
我有2個文件:test和input1。 以下是我的「測試」文件:在Linux中重定向輸入
echo $1 $2
改變輸出作品,當我在寫終端:
./test foo bar > input1
「FOO條」被寫入輸入1串。 然而,當我寫在終端:
./test < input1
所有打印在該終端是跳過的行。
任何想法爲什麼「富酒吧」沒有打印到終端?
這是因爲測試不會回標準輸入,它相呼應的命令參數。
值$1
和$2
代表命令行上的第一個和第二個參數,它們是測試回聲。
的小於(「<」)符號重定向標準輸入(默認情況下,在一個交互式shell控制檯),並要重定向發送到測試標準輸入來自輸入1,但測試甚至沒有看標準輸入,它只看命令行參數。
爲了讓殼更像你期待,你必須採取的輸入1內容並把它傳遞給測試命令參數。
或許,這就是你想要的結果:
./test $(cat input1)
做你想做什麼,你應該做的:
./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
輸入可在bash被重定向如下(我還是新來的Linux):
cat <& 0
這裏, 0
,代表Console Input
,而1
將代表Console Output
,而2
代表Console Error Output
。
好點。那麼我怎麼才能讓它迴應標準輸入? – tmldwn
我已更新回覆以回答這個新問題。 – danorton