“

我正在寻找重定向的示例,<<因为我不太理解它。我知道<是为了发送指定文件的内容以用作标准输入,例如:

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 << EOFsomeprog接受输入,直到看到一行仅包含字符串EOF(后面甚至没有空格)。

注意:某些从命令行获取输入的程序希望您通过按 来终止输入Ctrl+D。该击键对应于使用美国信息交换标准代码 (ASCII) 的文件结束标记。

相关内容