2012-09-06 34 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 
相关问题