我理解<
输入重定向和两个>
/ >>
输出重定向(文件中的双追加内容)。但我不理解<<
双输入重定向。
例如echo "cat < input | wc > output" | tcsh
生成此输出文件:2 2 11
但echo "cat << input | wc > output" | tcsh
生成此输出文件:0 0 0
。
<<
做什么?它似乎没有向wc stdin发送数据,但为什么呢?
答案 0 :(得分:1)
在csh中,就像POSIX系列shell一样,<<
启动一个heredoc - 也就是说,一个多行字符串由一行只包含紧跟在它之后的单词终止。因此,在以下示例中:
cat << input | wc > output
this is test data here
input
this is test data here
以stdin的形式提供给cat
,其标准输出以stdin的形式输入wc
。 (顺便说一下,在这里使用cat
没有任何意义;你只能wc <<input >output
具有相同的效果,并且效率低得多。)