我正在寻找重定向的示例,<<
因为我不太理解它。我知道<
是为了发送指定文件的内容以用作标准输入,例如:
cat < file.txt
但我不明白<<
是什么意思。我看到一个关于它的描述,上面写着“接受下一行的文本作为标准输入”,但仍然感到困惑。
答案1
这允许您将要输入到脚本内的命令的文本嵌入到脚本本身中,而不是外部文件中。因此,您可以将输入内容放在包含脚本和输入数据的单个文件中,而不是从另一个文件重定向。
这在混合 shell 脚本和 awk、perl 或其他脚本语言时特别有用。
值得注意的是,<<
重定向后的单词被视为重定向的结束。
一个简单的例子:
#!/bin/sh
cat << EOF > output.txt
line 1
line 2
line 3
EOF
echo done
这将生成一个output.txt
包含以下内容的文件:
line 1
line 2
line 3
脚本将只打印done
到终端
答案2
这就是所谓的此处文档。
如果您想在命令 shell 中定义文件的一部分,这主要使用。 IE
cat <<foobarbaz > /tmp/file.txt
hello
world
$$
foobarbaz
将填充/tmp/file.txt
文件
hello
world
1234
假设 1234 是进程 ID。
答案3
该运算符实现了一个此处文档,它将以下行中的文本作为标准输入。不过,您可能不会在命令行上使用此重定向器,因为以下行是标准输入,因此无需重定向它们。相反,您可以将此命令用作脚本的一部分,以便将数据传递给命令。与大多数重定向运算符不同,紧跟在代码后面的文本<<
不是文件名;相反,它是一个用于标记结尾的单词。输入。例如,键入someprog << EOF
会someprog
接受输入,直到看到一行仅包含字符串EOF
(后面甚至没有空格)。
注意:某些从命令行获取输入的程序希望您通过按 来终止输入Ctrl+D
。该击键对应于使用美国信息交换标准代码 (ASCII) 的文件结束标记。