为了账号安全,请及时绑定邮箱和手机立即绑定

“cat<EOF”在bash是如何工作的?

“cat<EOF”在bash是如何工作的?

绝地无双 2019-07-16 14:20:00
“cat<EOF”在bash是如何工作的?我需要编写一个脚本来将多行输入到程序(psql).在Google搜索了一下之后,我发现下面的语法工作起来了:cat << EOF | psql ---params BEGIN;`pg_dump ----something`update table .... statement ...;END;EOF这将正确构造多行字符串(从BEGIN;到END;,并将其作为输入psql.但是我不知道它是如何/为什么工作的,请有人解释一下好吗?我主要指的是cat << EOF,我知道>输出到文件,>>附加到文件中,<从文件中读取输入。什么<<是吗?有手册吗?
查看完整描述

3 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

在您的例子中,“EOF”被称为“这里的标签”。基本上<<Here告诉shell,您将输入一个多行字符串,直到“标记”。Here..你可以把这个标签命名为你想要的,它通常是EOF或STOP.


关于这里标签的一些规则:


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

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

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

例子:


$ cat >> test <<HERE

> Hello world HERE <-- Not by itself on a separate line -> not considered end of string

> This is a test

>  HERE <-- Leading space, so not considered end of string

> and a new line

> HERE <-- Now we have the end of the string


查看完整回答
反对 回复 2019-07-16
  • 3 回答
  • 0 关注
  • 420 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信