“cat<EOF”在bash是如何工作的?我需要編寫一個腳本來將多行輸入到程序(psql).在Google搜索了一下之后,我發現下面的語法工作起來了:cat << EOF | psql ---params
BEGIN;`pg_dump ----something`update table .... statement ...;END;EOF這將正確構造多行字符串(從BEGIN;到END;,并將其作為輸入psql.但是我不知道它是如何/為什么工作的,請有人解釋一下好嗎?我主要指的是cat << EOF,我知道>輸出到文件,>>附加到文件中,<從文件中讀取輸入。什么<<是嗎?有手冊嗎?
3 回答

慕桂英3389331
TA貢獻2036條經驗 獲得超8個贊
在您的例子中,“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
- 3 回答
- 0 關注
- 478 瀏覽
添加回答
舉報
0/150
提交
取消