Bash here 文档:重定向输入与直接键入

Bash here 文档:重定向输入与直接键入
$ cat<<EOF
> a
> EOF
a

我可以自动重定向流而不是输入标准输入吗?我已经尝试过了,但这就是我得到的。

[debian:~]$ cat <<(printf "EOF\na\nEOF\n")
-bash: syntax error near unexpected token `('
[debian:~]$ cat <(printf "EOF\na\nEOF\n")
EOF
a
EOF

答案1

Here-doc 只是将特定输入传递到程序的 stdin 的一种语法。但这并不是唯一的一个。您还可以使用:

  • 管道:

    printf "a\n" | cat
    
  • 这里的字符串:

    cat <<< "a"
    
  • 流程替换(正如您已经所做的那样):

    cat < <(printf "a\n")
    

(请注意,here-string 会在给定字符串的末尾添加换行符。其他字符串不会,所以我使用 手动添加了一个换行符printf。)

传递EOF字符串cat可能不是很有用,它只是here-doc语法的一部分。

相关内容