shell脚本里的<

999朵玫瑰 2017-08-28 10:32:26
shell脚本里的<<EOF是干什么用的?都是什么时候用?
比如以下的例子:
lftp -u someone,mypassword 192.168.1.1:22 <<EOF
cat << EOF


此外,每个shell脚本的结尾也都有一个EOF,这个是必须的吧?正如开头的#!/bin/bash
...全文
3884 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
9527 2017-08-28
  • 打赏
  • 举报
回复
楼楼,你搜索下 shell +EOF很多答案的,我搬运下:

在shell编程中,遇大段文本或代码时,经常会用到eof。本文就介绍下其用法,供初学的朋友参考。
在shell脚本中,通常将EOF与 << 结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返回到主Shell。
EOF只是一个分界符,当然也可以用abcde替换。
当shell遇到<<时,它知道下一个词是一个分界符。在该分界符以后的内容都被当作输入,直到shell又看到该分界符(位于单独的一行)。
此分界符可以是所定义的任何字符串,其实,不一定要用EOF,只要是“内容段”中没有出现的字符串,都可以用来替代EOF,完全可以换成abcde之类的字符串,只是一个起始和结束的标志罢了。
sinat_35865431 2017-08-28
  • 打赏
  • 举报
回复
在shell脚本中,通常将EOF与 << 结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返回到主Shell。 EOF只是一个分界符,当然也可以用abcde替换。 当shell遇到<<时,它知道下一个词是一个分界符。在该分界符以后的内容都被当作输入,直到shell又看到该分界符(位于单独的一行)。 此分界符可以是所定义的任何字符串,其实,不一定要用EOF,只要是“内容段”中没有出现的字符串,都可以用来替代EOF,完全可以换成abcde之类的字符串,只是一个起始和结束的标志罢了。
#!/bin/bash
#Filename:do.sh
su - oracle -c "
export ORACLE_SID=orcl
sqlplus /nolog <<EOF
connect / as sysdba
startup;
exit;
EOF"
sleep 5
su - oracle -c 
lsnrctl start
<< EOF ... EOF 其中的"..."表示用户输入内容。 说明:EOF只是一个标示符,可以用其它非关键字符或字符串来代替,例如: << abc ..... abc 参考阅读:http://blog.csdn.net/simon_dong618/article/details/11674279

19,613

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧