溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

linux的eof怎么使用

發(fā)布時(shí)間:2023-04-19 11:00:21 來源:億速云 閱讀:88 作者:iii 欄目:建站服務(wù)器

這篇文章主要講解了“l(fā)inux的eof怎么使用”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“l(fā)inux的eof怎么使用”吧!

linux的eof是自定義終止符,其全稱是“END Of File”;eof不是固定的,可以隨意設(shè)置別名,在linux中按“ctrl-d”就代表eof;eof一般會(huì)配合cat,能夠輸出多行文本。

一、EOF的用法

EOF是(END Of File)的縮寫,表示自定義終止符。既然自定義,那么EOF就不是固定的,可以隨意設(shè)置別名,在linux按ctrl-d 就代表EOF。

EOF一般會(huì)配合cat能夠多行文本輸出。

其用法如下:

<<EOF        #開始

....                  #輸入內(nèi)容

EOF            #結(jié)束

還可以自定義,比如自定義:

<<ABC        #開始

....

ABC              #結(jié)束

通過cat配合重定向能夠生成文件并追加操作,在它之前先熟悉幾個(gè)特殊符號(hào)

<:輸入重定向

>:輸出重定向

>>:輸出重定向,進(jìn)行追加,不會(huì)覆蓋之前內(nèi)容

<<:標(biāo)準(zhǔn)輸入來自命令行的一對(duì)分隔號(hào)的中間內(nèi)容

例子1:

[root@ren5 ~]# cat <<EOF

> hello

> EOF

hello

我們知道cat的操作對(duì)象是文件,但是例1中cat的操作對(duì)象不是文件,而是用戶輸入;那么我們可以這樣理解例1:先在文件file中輸入“Hello”,再用cat file輸出其中的內(nèi)容。

也就是說我們可以用一個(gè)文件來替代"<< EOF EOF"。

反過來說,如果操作命令中的文件是輸入對(duì)象,也可以用"<< EOF EOF"來替代的。

例子2:

[root@ren5 ~]# cat 1.txt

abc

[root@ren5 ~]# cat <<EOF > 1.txt             #向文件1.txt輸入覆蓋內(nèi)容(也可以:cat > 1.txt <<EOF)

> 123

> 456

> 678

> LOL

> EOF

[root@ren5 ~]# cat 1.txt

123

456

678

LOL

“<< EOF EOF”的作用是在命令執(zhí)行過程中用戶自定義輸入,它類似于起到一個(gè)臨時(shí)文件的作用,只是比使用文件更方便靈活。

二、cat <<EOF 與 cat <<-EOF 的區(qū)別

兩個(gè)都是獲取stdin,并在EOF處結(jié)束stdin,輸出stdout。

在我們使用cat <<EOF時(shí),我們輸入完成后,需要在一個(gè)新的一行輸入EOF結(jié)束stdin的輸入。EOF必須頂行寫,前面不能用制表符或者空格。

如果重定向的操作符是<<-,那么分界符(EOF)所在行的開頭部分的制表符(Tab)都將被去除。這可以解決由于腳本中的自然縮進(jìn)產(chǎn)生的制表符。

例子1

[root@ren5 ~]# cat 2.sh

#!/bin/bash

cat <<EOF

你好,EOF!

EOF

[root@ren5 ~]# sh 2.sh

你好,EOF!

[root@ren5 ~]# sh 2.sh

2.sh:行4: 警告:立即文檔在第 2 行被文件結(jié)束符分隔 (需要 `EOF')

你好,EOF!

     EOF

如果結(jié)束分解符EOF前有制表符或者空格,則EOF不會(huì)被當(dāng)做結(jié)束分界符,只會(huì)繼續(xù)被當(dāng)做stdin來輸入。

例子2

[root@ren5 ~]# cat 2.sh

#!/bin/bash

cat <<-EOF

你好,EOF!

     EOF

[root@ren5 ~]# sh 2.sh

你好,EOF!

雖然最后的EOF前面有多個(gè)制表符和空格,但仍然會(huì)被當(dāng)做結(jié)束分界符,表示stdin的結(jié)束。

感謝各位的閱讀,以上就是“l(fā)inux的eof怎么使用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)linux的eof怎么使用這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI