warning: here-document at line 22 delimited by end-of-file (wanted `EOF')
阿新 • • 發佈:2021-10-05
記錄一個bash指令碼中使用EOF遇到的問題
下面是我最初的程式碼
#!/bin/bash #Author: wangml #Created Time: #Script Description: 監控一個服務埠 # 監控方法 # 通過檢視systemct1 service 服務啟動狀態 # lsof 檢視埠是否存在 # 檢視程序是否存在 ####上述方式會出現問題:壓力過大無法相應 或者 服務down了,但上述東西還在 # 測試埠是否有響應 推薦 port_status () { # 建立一個臨時檔案 temp_file=`mktemp port_status.XXX` # 判斷依賴命令telnet是否存在 [ ! -x /usr/bin/telnet ] && echo "telnet: not found command" && exit 1 # 測試埠 $1 IP $2 port ( telnet $1 $2 <<EOF quit EOF ) &>$temp_file if egrep "\^]" $temp_file &>/dev/null;then echo "$1 $2 is open" else echo "$1 $2 is down" fi rm -f $temp_file } port_status $1 $2
在執行過程中會出現標題所示的warning
(base) [root@CentOS-wangml shell]# bash -x ex2.sh 192.168.1.225 22
ex2.sh: line 38: warning: here-document at line 22 delimited by end-of-file (wanted `EOF')
ex2.sh: line 39: syntax error: unexpected end of file
解決方式
刪除EOF前面所有的空格、製表符
修改後程式碼如下
轉載請註明出處#!/bin/bash #Author: wangml #Created Time: #Script Description: 監控一個服務埠 # 監控方法 # 通過檢視systemct1 service 服務啟動狀態 # lsof 檢視埠是否存在 # 檢視程序是否存在 ####上述方式會出現問題:壓力過大無法相應 或者 服務down了,但上述東西還在 # 測試埠是否有響應 推薦 port_status () { # 建立一個臨時檔案 temp_file=`mktemp port_status.XXX` # 判斷依賴命令telnet是否存在 [ ! -x /usr/bin/telnet ] && echo "telnet: not found command" && exit 1 # 測試埠 $1 IP $2 port ( telnet $1 $2 <<EOF quit EOF ) &>$temp_file if egrep "\^]" $temp_file &>/dev/null;then echo "$1 $2 is open" else echo "$1 $2 is down" fi rm -f $temp_file } port_status $1 $2