linux的EOF是自定義終止符,其全稱是“END Of File”;eof不是固定的,可以隨意設置別名,在linux中按“ctrl-d”就代表eof;eof一般會配合cat,能夠輸出多行文本。
本教程操作環境:linux5.9.8系統、Dell G3電腦。
linux的eof是什么意思?
shell基礎之EOF的用法
一、EOF的用法
EOF是(END Of File)的縮寫,表示自定義終止符。既然自定義,那么EOF就不是固定的,可以隨意設置別名,在linux按ctrl-d?就代表EOF。
EOF一般會配合cat能夠多行文本輸出。
其用法如下:
開始
….??????????????? ? #輸入內容
EOF? ? ? ? ? ??#結束
還可以自定義,比如自定義:
開始
….
ABC? ? ? ? ? ??? #結束
通過cat配合重定向能夠生成文件并追加操作,在它之前先熟悉幾個特殊符號
:輸入重定向
>:輸出重定向
>>:輸出重定向,進行追加,不會覆蓋之前內容
:標準輸入來自命令行的一對分隔號的中間內容
例子1:
[root@ren5 ~]# cat
> hello
> EOF
hello
我們知道cat的操作對象是文件,但是例1中cat的操作對象不是文件,而是用戶輸入;那么我們可以這樣理解例1:先在文件file中輸入“Hello”,再用cat file輸出其中的內容。
也就是說我們可以用一個文件來替代“。
反過來說,如果操作命令中的文件是輸入對象,也可以用“來替代的。
例子2:
[root@ren5 ~]# cat 1.txt
abc
[root@ren5 ~]# cat 1.txt ??????????? #向文件1.txt輸入覆蓋內容(也可以:cat > 1.txt )
> 123
> 456
> 678
> LOL
> EOF
[root@ren5 ~]# cat 1.txt
123
456
678
LOL
“”的作用是在命令執行過程中用戶自定義輸入,它類似于起到一個臨時文件的作用,只是比使用文件更方便靈活。
二、cat
兩個都是獲取stdin,并在EOF處結束stdin,輸出stdout。
在我們使用cat 時,我們輸入完成后,需要在一個新的一行輸入EOF結束stdin的輸入。EOF必須頂行寫,前面不能用制表符或者空格。
如果重定向的操作符是,那么分界符(EOF)所在行的開頭部分的制表符(Tab)都將被去除。這可以解決由于腳本中的自然縮進產生的制表符。
例子1:
[root@ren5 ~]# cat 2.sh
#!/bin/bash
cat
你好,EOF!
EOF
[root@ren5 ~]# sh 2.sh
你好,EOF!
[root@ren5 ~]# sh 2.sh
2.sh:行4: 警告:立即文檔在第 2 行被文件結束符分隔 (需要 `EOF’)
你好,EOF!
????? EOF
如果結束分解符EOF前有制表符或者空格,則EOF不會被當做結束分界符,只會繼續被當做stdin來輸入。
例子2:
[root@ren5 ~]# cat 2.sh
#!/bin/bash
cat
你好,EOF!
????? EOF
[root@ren5 ~]# sh 2.sh
你好,EOF!
雖然最后的EOF前面有多個制表符和空格,但仍然會被當做結束分界符,表示stdin的結束。
推薦學習:《linux視頻教程》