婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > CentOS7運行.sh腳本提示syntax error: unexpected end of file的解決方法

CentOS7運行.sh腳本提示syntax error: unexpected end of file的解決方法

熱門標簽:房產證地圖標注的兩個面積 同花順電話機器人微信 輝縣市地圖標注 北京電銷機器人對市場的影響 地圖標注x是啥意思 威海電銷外呼系統好用嗎 湖北孝感如何辦理 武漢語音電銷機器人加盟 外呼系統的合法性

CentOS 7運行.sh腳本提示syntax error: unexpected end of file。腳本是通過本地電腦的notepad++編輯之后用ftp上傳到CentOS 7服務器上的。

錯誤原因:

shell腳本在本地電腦編輯的,格式是dos(可以用vi編輯該shell腳本,進入命令行模式,輸入:set ff 回車即可看到左下角顯示fileformat=dos),在dos/window下按一次回車鍵實際上輸入的是“回車(CR)”和“換行(LF)”,而Linux/unix下按一次回車鍵只輸入“換行(LF)”,所以本地修改的sh文件在CentOS上運行每行都會多了一個CR,因此就會報錯syntax error: unexpected end of file。

解決方法:

解決方法很簡單,用vi編輯器打開該shell腳本,進入命令行模式(CTRL+C),輸入:set ff=unix之后wq保存退出即可。這時如果再通過set ff查看會發現fileformat=unix。

下面是其他網友的補充

我們在編輯Linux服務器上的文件時,如果直接在Linux環境下編輯的話,比較麻煩,大段粘貼格式比較亂,還得自己一行一行去調整,因此會選擇用編輯器來編輯我們Linux環境下的文件,我用的是NodePad++,大家可以參考這篇https://www.jb51.net/softjc/712049.html來學習如何使用NodePad++來編輯Linux系統的文件。

       今天我要說的重點是,我們在用NodePad++編輯完腳本文件并上傳到服務器后,直接運行腳本報錯的問題,比如我要在NodePad++編輯器中編輯下面這段腳本

#!/bin/sh
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
	/usr/local/nginx/sbin/nginx
	sleep 2
	if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
		killall keepalived
	fi
fi

先來說說第一個錯誤:syntax error: unexpected end of file,大家可以把上面那段腳本內容放到腳本文件nginx_check.sh當中(當然大家可以隨便起個名字,后綴是.sh就可以了),需要注意的是最后一個"fi",默認是黑色字體,我們敲回車增加一行,這時最后那個"fi"顏色就變成藍色了,如下圖所示。

 

編輯完該腳本我們保存,自動就會上傳到Linux服務器,下面我們便在Linux服務器執行該腳本(需要注意的是,該腳本文件一定要有執行權限,如果沒有執行權限就使用chmod +x nginx_check.sh來給腳本增加執行權限),我們會看到如下所示的錯誤,提示結尾不合法。

[root@bhz004 keepalived]# sh ./nginx_check.sh
./nginx_check.sh: line 10: syntax error: unexpected end of file
[root@bhz004 keepalived]#

我們再來看另外一個錯誤:syntax error near unexpected token `fi',大家可以直接把腳本內容粘貼到腳本文件中,最后一個"fi"此時是黑色的,我們不用管它。

這時我們執行該腳本,會看到如下所示錯誤,提示第9行"fi"有問題。

[root@bhz004 keepalived]# sh ./nginx_check.sh 
./nginx_check.sh: line 9: syntax error near unexpected token `fi'
./nginx_check.sh: line 9: `fi'
[root@bhz004 keepalived]#

上面兩個問題都是由于.sh文件的格式為dos格式。而linux只能執行格式為unix格式的腳本。因為在dos/window下按一次回車鍵實際上輸入的是“回車(CR)”和“換行(LF)”,而Linux/unix下按一次回車鍵只輸入“換行(LF)”,所以修改的sh文件在每行都會多了一個CR,所以Linux下運行時就會報錯找不到命令。
        我們可以查看該腳本文件的格式,方法是使用命令:vim nginx_check.sh進入編輯文件界面,如下圖所示。

直接輸入":",然后在":"之后輸入"set ff"如下圖所示


回車即可看到腳本格式,如下圖所示,可以看到當前腳本格式是dos。


我們需要把格式改為unix,方法是輸入":set ff=unix",也可以輸入":set fileformat=unix"如下圖所示。


輸入完之后,回車即可完成切換格式。然后我們再輸入":set ff"來查看格式,如下圖所示,可以看到當前腳本格式變成了我們想要的"unix"了。


這時我們再執行nginx_check.sh就沒問題了,如下所示。

[root@bhz004 keepalived]# sh ./nginx_check.sh 
[root@bhz004 keepalived]# ps -ef | grep nginx
root    3679   1 0 19:42 ?    00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody   3681  3679 0 19:42 ?    00:00:00 nginx: worker process   
root    3711  1898 0 20:23 pts/0  00:00:00 grep nginx
[root@bhz004 keepalived]#

這篇文章就介紹到這了,基本上就是注意編碼問題與換行問題,不能用文本編輯器。

您可能感興趣的文章:
  • centOS6中使用crontab定時運行執行jar程序的腳本
  • centos6.5配置ssh免秘鑰登陸執行pssh命令的講解
  • CentOS7如何執行PHP定時任務詳解
  • Centos 7下利用crontab定時執行任務詳解
  • 解決centos7 開機/etc/rc.local 不執行的問題
  • centos 設置定時任務執行指定腳本的方法
  • CentOS使用expect批量遠程執行腳本和命令

標簽:西寧 紹興 麗江 蚌埠 日喀則 武威 迪慶 安康

巨人網絡通訊聲明:本文標題《CentOS7運行.sh腳本提示syntax error: unexpected end of file的解決方法》,本文關鍵詞  CentOS7,運行,.sh,腳本,提示,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《CentOS7運行.sh腳本提示syntax error: unexpected end of file的解決方法》相關的同類信息!
  • 本頁收集關于CentOS7運行.sh腳本提示syntax error: unexpected end of file的解決方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 新密市| 安泽县| 东乡县| 沁源县| 宁城县| 舒兰市| 衢州市| 攀枝花市| 石景山区| 东明县| 南和县| 岱山县| 鄂伦春自治旗| 成安县| 藁城市| 会理县| 崇仁县| 万山特区| 翁牛特旗| 合川市| 辽源市| 溆浦县| 称多县| 曲阳县| 抚远县| 永吉县| 龙州县| 承德县| 浦城县| 南岸区| 桂林市| 忻城县| 文成县| 宣城市| 稷山县| 从江县| 隆尧县| 莱西市| 眉山市| 无极县| 鄂托克前旗|