2012-09-06 37 views
2

我們知道,它是簡單的發送一個文本文件,file.txt的內容,以一個腳本,從標準輸入讀取:發送文本加一個文件,標準輸入的內容,而無需使用臨時文件

the_script < file.txt 

假設我想要做與上面相同的事情,除了我想要發送到腳本後面的文件的內容的額外行文本?當然必須有比這更好的方式:

echo "Here is an extra line of text" > temp1 
cat temp1 file.txt > temp2 
the_script < temp2 

這可以完成而不創建任何臨時文件?

+0

你應該給予好評的工作答案,而不僅僅是在他們下面 –

回答

0

這應該bash做:

{ echo "Here is an extra line of text"; cat file.txt; } < the_script 
+0

評論謝謝你,偉大工程。假設'the_script'有一個可選標誌,即'the_script --option'。這將如何適合這個例子? – JCOidl

+0

你可以在'the_script'之後加上標誌,就像這樣:'{echo「這是一行額外的文本」; cat file.txt; }

2

有幾種方法可以做到這一點。現代殼(Bash和ksh93的)有一個特徵,以支持讀取從stdin單個值,稱爲這裏串

cat - file.txt <<< "Extra line"|the_script 

cat第一個參數是一個連字符-從標準輸入讀取。這裏的字符串遵循<<<表示法。在cdarke的回答

+0

謝謝你的回答,這很好。 – JCOidl

2

建設,使其可讀左到右:

echo "Extra line" | cat - file.txt | the_script 
相關問題