Shell 里给变量赋值为多行文本
通常在 Shell 中给变量赋值时,我们通常只能赋值单行文本内容,例如:
var="Hello World"
然而,如果我们想要给变量赋值多行文本,以上方法就无法满足需求。为了实现多行文本赋值,我们可以使用 read
命令,并结合 EOF
标记符来实现。
使用 read
命令和 EOF
赋值多行文本
我们可以使用 read
命令从 EOF
标记内读取内容并赋值给变量:
read -r -d '' var <<EOF
text 1
text 2
text 3
EOF
关键参数解释:
read
:从标准输入或其他源读取内容并赋值给变量。-r
:告诉read
不转义反斜杠符号,确保原始文本中的特殊符号不会被处理。-d ''
:指定读取内容的结束符为空字符串,表示一直读取到输入结束为止。<<EOF
:用于标识多行文本块的开始,EOF
是结束符。EOF
:结束标记,表示多行文本的结束位置。
示例
read -r -d '' var <<EOF
This is the first line.
This is the second line.
And this is the third line.
EOF
# 输出变量内容
echo "$var"
运行结果:
This is the first line.
This is the second line.
And this is the third line.
从外部文件读取内容并赋值
除了从嵌入的文本读取内容赋值外,还可以直接从文件中读取内容:
read -r -d '' var < file.txt
该命令会读取 file.txt
的所有内容,并将其赋值给变量 var
。
总结
通过使用 read
命令结合 EOF
,我们可以轻松地为 Shell 变量赋值多行文本,不论是从嵌入文本块还是从文件中读取内容,这种方式都非常方便。