使用多个

使用多个

我想知道重定向 <<< 在bash.我知道它将后面的链重定向到之前的命令,就好像内容在虚拟文件中一样。例子

$ cut -d. -f1 <<< A.B
A
$ cut -d. -f1 <<< 'A.B
> C.D'
A
C 

但我不明白多次使用时它会做什么。例子

$ cut -d. -f1 <<< A.B <<< C.D
C

我本来期望以下输出

A
C

为什么 shell 只考虑最后一次重定向?如何向文件添加虚拟行?我想做类似以下示例的操作,以便command获取virtual line 然后处理文件my_file

command <<< "virtual line" my_file 

笔记: 我正在使用bash版本4.4.12(1)-release (x86_64-pc-linux-gnu)

答案1

<<<重定向标准输入。如果重定向 stdin 然后再次重定向,则第一次重定向会丢失。

如果命令有一种表达“process stdin”的方式,例如 forcat是破折号,则可以通过这种方式在前面添加一行:

cat - input_file <<< 'virtual line'

答案2

提供替代方案乔罗巴的回答,您可以使用以下语法构造更完整的输入:

command  << EOF
virtual line
`cat input_file`
EOF

相关内容