我想知道重定向 <<< 在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