在shell程式設計中,遇大段文本或代碼時,經常會用到eof。本文就介紹下其用法,供初學的朋友參考。
在shell腳本中,通常将EOF與 << 結合使用,表示後續的輸入作為子指令或子Shell的輸入,直到遇到EOF為止,再傳回到主Shell。
EOF隻是一個分界符,當然也可以用abcde替換。
當shell遇到<<時,它知道下一個詞是一個分界符。在該分界符以後的内容都被當作輸入,直到shell又看到該分界符(位于單獨的一行)。
此分界符可以是所定義的任何字元串,其實,不一定要用EOF,隻要是“内容段”中沒有出現的字元串,都可以用來替代EOF,完全可以換成abcde之類的字元串,隻是一個起始和結束的标志罷了。
1,command<<EOF
(内容)
EOF
例如:
#!/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
說明:
将“内容段”整個作為指令的輸入。
用su指令讀取整段指令,并逐行執行。
2,特殊用法:
: << COMMENTBLOCK
shell腳本代碼段
COMMENTBLOCK
用來注釋整段腳本代碼。 : 是shell中的空語句。
echo start
:<<COMMENTBLOCK
echo
echo "this is a test"
echo
COMMENTBLOCK
echo end
這段腳本執行時,中間部分不會被執行:
代碼示例:
[[email protected] shell]# sh eof.sh
start
end