Linux 上 Bash 中的"Here 文档"和"Here 字符串"
简介
Bash 是一种 Unix Shell 和命令语言,常用于 Linux 和其他基于 Unix 的操作系统。它是一个强大的工具,可用于在 Unix 系统上自动执行任务、管理系统配置以及执行各种其他操作。Bash 提供了多种功能,使其成为一个强大而灵活的用户工具,包括对"Here 文档"和"Here 字符串"的支持。
什么是"Here 文档"?
"Here 文档",也称为"Here doc",是一种特殊的输入重定向,允许用户为命令指定多行输入。这对于将长文本块或脚本代码指定为命令的输入特别有用。
使用 << 指定"Here 文档"运算符后跟一个分隔符,分隔符可以是任意字符串。输入行在分隔符后指定,并以仅包含分隔符的行结尾,后跟分号 (;)。例如,以下命令使用此处文档为 cat 命令指定多行输入 -
$ cat <<EOF This is line 1 of the input. This is line 2 of the input. This is line 3 of the input. EOF
在此示例中,分隔符为"EOF"(代表"文件结束")。输入行在分隔符和仅包含分隔符的终止行之间指定。执行命令时,cat 命令会读取输入并将其显示在屏幕上。
"Here 文档"还可用于为以脚本代码作为输入的命令(例如 awk 或 perl)指定输入。例如,以下命令使用 Here 文档为 awk 命令指定脚本−
$ awk '{print $1}' <<EOF
This is line 1 of the input.
This is line 2 of the input.
This is line 3 of the input.
EOF
在此示例中,awk 命令将读取输入并执行 here 文档中指定的脚本,该脚本仅打印每行输入的第一个字段(例如列)。
什么是 Here 字符串?
"Here 字符串"类似于 here 文档,但它使用单引号 (') 而不是双小于号 (<<) 指定。与"Here 文档"类似,Here 字符串允许用户为命令指定多行输入。但是,Here 字符串被解释为单个字符串,而不是多行输入。
"Here 字符串"使用单引号后跟分隔符(可以是任何字符串)来指定。然后在分隔符后指定字符串,并以仅包含分隔符和单引号的行结尾。例如,以下命令使用此处的字符串指定多行字符串作为 echo 命令的输入 −
$ echo 'This is a string that spans multiple lines.'
在此示例中,分隔符是单引号本身。字符串在分隔符和仅包含分隔符的终止行之间指定。执行命令时,echo 命令会读取输入并将其作为单个字符串显示在屏幕上。
此处的字符串也可用于为以脚本代码作为输入的命令指定输入,例如 awk 或 perl。例如,以下命令使用 here 字符串为 awk 命令指定脚本:−
$ awk '{print $1}' 'BEGIN {FS=":"}
{print $1}'
在此示例中,awk 命令将读取输入并执行 here 字符串中指定的脚本,该脚本将字段分隔符设置为冒号 (:),然后打印每行输入的第一个字段。
使用"Here Documents"和"Here Strings"
在使用 Bash 时,"Here Documents"和"Here Strings"在各种情况下都很有用。一些常见的用例包括:−
将长文本块或脚本代码指定为命令的输入。
通过将脚本或命令拆分为多行,使其更易于阅读和维护。
简化需要多行输入的命令的输入指定过程。
以下脚本示例使用"此处文档"创建新文件并向其中写入一些文本
#!/bin/bash # Create a new file called "output.txt" cat > output.txt <<EOF This is line 1 of the output. This is line 2 of the output. This is line 3 of the output. EOF
此脚本使用 cat 命令和 > 运算符将输出重定向到名为 "output.txt" 的新文件。然后,使用 here 文档指定应写入文件的文本。执行脚本时,cat 命令会将 here 文档中指定的文本写入 "output.txt" 文件。
以下脚本示例使用 here 字符串将多行字符串作为参数传递给 grep 命令 −
#!/bin/bash # Search for a pattern in a multi-line string grep 'pattern' 'line 1 line 2 line 3'
在此示例中,grep 命令在 here 字符串指定的多行字符串中搜索字符串 "pattern"。如果找到该字符串,grep 命令会将匹配的一行或多行打印到屏幕上。
结论
"Here 文档"和"Here 字符串"是 Bash 中的实用功能,允许用户为命令指定多行输入。它们可用于指定长文本块或脚本代码作为输入,或简化为需要多行输入的命令指定输入的过程。通过使用 here 文档和 here 字符串,用户可以创建更易于阅读和维护的脚本和命令,并能够更有效地在基于 Unix 的系统上自动执行各种任务。
相关文章
有用资源
linux 参考教程 - 该教程包含有关 linux 的更多信息:https://www.cainiaomax.com/linux/

