shell脚本中的EOF是什么

发布时间 2023-09-25 14:56:58作者: 雪竹子

概述

在Shell脚本中,EOF(End of File)是一个特殊标记,用于指示一段文本的开始和结束位置。但它并不是Shell脚本中的关键字或保留字。您可以自由选择EOF之前的标记,只需确保开始和结束标记匹配即可。基本上<<EOF告诉 shell 您将输入多行字符串,直到“标记” EOF。您可以根据需要命名此标签,通常是EOF或STOP。

EOF 参数示例

sqlplus / as sysdba << EOF
select name, open_mode from v$database;
archive log list;
EOF

sqlplus 命令将启动 sqlplus,但现在我们需要传递 Linux 解释器无法理解的 sql 查询。<< EOF参数将把 sql 查询作为用户输入直接传递到 sql 提示符。

这样做直到遇到相同的EOF参数。需要遵循的一些规则:

  • 标签可以是任何字符串,大写或小写,尽管大多数人按照惯例使用大写

  • 如果该行中有其他单词,则该标签将不会被视为此处标签。在这种情况下,它将仅被视为字符串的一部分。标签本身应位于单独的行上,才能被视为标签

  • 标记在该行中不应有前导或尾随空格才能被视为标记。否则它将被视为字符串的一部分

保存 EOF 输出

您可以将 EOF 输出保存到另一个文件

sqlplus / as sysdba << EOF > output.log
select name, open_mode from v$database;
archive log list;
EOF

EOF 示例

使用 EOF 打印变量值

a=10
cat << EOF
$a
EOF

通过 shell 脚本运行 rman 备份

cat << EOF > print.sh
#!/bin/bash
echo \$PWD
echo $PWD
EOF