欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

【CentOS】EOF使用

发布时间:2024/9/19 编程问答 49 豆豆
生活随笔 收集整理的这篇文章主要介绍了 【CentOS】EOF使用 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

前言

  • 本文的脚本在CentOS7中已测试

介绍

EOF是END Of File的缩写,表示自定义终止符。在linux按ctrl-d就代表EOF。
Shell中通常将EOF与 << 结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返回到主调Shell。

用途

编写自动执行的脚本时很有用。比如,自动执行的mysql脚本,自动执行的sftp、ftp脚本等。

注意事项

  • 格式为:
shell> shell命令 <<EOF exit EOF

比如这样

shell> ftp<<EOF exit EOF
  • 第1个EOF的后一行开始 到 第2个EOF的前一行结束,之间为EOFd内容可以自动输入。
  • 第1个EOF的同一行中,在EOF后面还可以有其它的命令,且不作为EOF内容。
  • 第2个EOF必须自己独占一行,且EOF前后不能有任何东西。
  • EOF不是关键字,可以随便改,比如可以改成HELLO、!、…
  • <<是关键字,不能修改
  • EOF不是万能的。当命令不支持EOF时,那就需要换用另外的办法。比如mysql的密码输入,就不支持EOF(mysql的高版本中,已经不能把密码作为mysql命令的参数了)。

示例1

模拟输入ftp命令。人工输入时,是这样的

shell> ftp # 这里已经切换到了ftp命令下 ftp> exit shell>

如果需要shell脚本在ftp命令下输入exit命令,则需要搭配EOF使用。如下:

shell> ftp<<EOF exit EOF shell>

上面这段儿的执行效果与上上面的那段儿执行效果一致。但,上面这段已经省去了人工输入exit命令。

示例2

将内容Hello World写到a.txt中:

shell> cat <<EOF >a.txt Hello World EOF shell> cat a.txt Hello World

示例3

还可以使用命令替换:

shell> cat <<EOF >a.txt today is `date` i am in dir `pwd` I can read numbers `for i in $(seq 1 10) do echo $i; done` EOF shell> cat a.txt today is Tue Mar 16 10:44:44 CST 2021 i am in dir /root I can read numbers 1 2 3 4 5 6 7 8 9 10

参考

Linux shell 中()‘‘,() ` `,(){},$[] $(()),[ ] (( )) [[ ]]作用与区别
bash之命令替换(command substitution)
Linux中的文件分界符EOF
linux下EOF写法梳理
Shell中重定向<<EOF注意事项

总结

以上是生活随笔为你收集整理的【CentOS】EOF使用的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。