最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2020年02月03日 17:47:57   作者:在京奮斗者  
這篇文章主要介紹了解決執(zhí)行腳本報syntax error: unexpected end of file或syntax error near unexpected token fi錯誤的問題,需要的朋友可以參考下

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查看會發(fā)現(xiàn)fileformat=unix。

下面是其他網(wǎng)友的補充

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

       今天我要說的重點是,我們在用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服務器執(zhí)行該腳本(需要注意的是,該腳本文件一定要有執(zhí)行權限,如果沒有執(zhí)行權限就使用chmod +x nginx_check.sh來給腳本增加執(zhí)行權限),我們會看到如下所示的錯誤,提示結尾不合法。

[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"此時是黑色的,我們不用管它。

這時我們執(zhí)行該腳本,會看到如下所示錯誤,提示第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只能執(zhí)行格式為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"了。


這時我們再執(zhí)行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]#

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

相關文章

  • Linux下如何安裝Run文件格式NVIDIA顯卡驅動

    Linux下如何安裝Run文件格式NVIDIA顯卡驅動

    本篇文章給大家介紹Linux下如何安裝Run文件格式NVIDIA顯卡驅動,主要設計到linux下安裝run文件格式nvidia顯卡驅動方面的知識點,對linux下安裝run文件格式nvidia顯卡驅動感興趣的朋友可以參考下本文
    2015-10-10
  • awk區(qū)間取值的例子

    awk區(qū)間取值的例子

    awk區(qū)間取值的例子,匹配某一區(qū)間內的值,有需要的朋友不妨參考下
    2013-02-02
  • Linux中rpm命令用法詳解

    Linux中rpm命令用法詳解

    rpm命令是用于在基于RPM包管理系統(tǒng)的Linux發(fā)行版中安裝、查詢、升級和刪除軟件包的命令行工具,本文講給大家詳細的介紹一下Linux?rpm命令的使用方法,感興趣的同學跟著小編一起來看看吧
    2023-08-08
  • vim命令匯總

    vim命令匯總

    本文主要介紹了vim命令匯總,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • 十三個寫好shell腳本的技巧分享

    十三個寫好shell腳本的技巧分享

    這篇文章主要給大家介紹了關于寫好shell腳本的13個技巧的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-06-06
  • Nginx和PHP-FPM的啟動、重啟、停止腳本分享

    Nginx和PHP-FPM的啟動、重啟、停止腳本分享

    這篇文章主要介紹了Nginx和PHP-FPM的啟動、重啟、停止腳本分享,腳本中包含start、stop、reload、restart等常用的管理方法,并可以加入系統(tǒng)服務然后使用servicem命令管理,需要的朋友可以參考下
    2014-12-12
  • Formatting Long Lines 格式化多行字符的shell腳本

    Formatting Long Lines 格式化多行字符的shell腳本

    這篇文章主要介紹了Formatting Long Lines 格式化多行字符的shell腳本,需要的朋友可以參考下
    2016-08-08
  • bash腳本中$符號的具體使用

    bash腳本中$符號的具體使用

    $符號主要用于訪問變量的值、參數(shù)擴展、算術運算以及命令替換等,本文主要介紹了bash腳本中$符號的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • shell中set?-e的具體使用

    shell中set?-e的具體使用

    set?-e?是一個?Shell?命令,它用于在腳本運行時自動退出,本文主要介紹了shell中set?-e的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • awk中查看包含某兩列字符的用法

    awk中查看包含某兩列字符的用法

    awk如何查看包含某兩列字符,命令及結果顯示如下
    2013-02-02

最新評論

兰溪市| 元朗区| 手游| 阳江市| 乌兰浩特市| 耿马| 安远县| 德庆县| 岗巴县| 灵寿县| 仙居县| 南靖县| 阿克陶县| 广灵县| 东宁县| 东城区| 巫溪县| 奉节县| 濉溪县| 姜堰市| 海南省| 黔西县| 杨浦区| 昭通市| 南陵县| 夏津县| 闸北区| 三台县| 九江县| 北川| 黑水县| 年辖:市辖区| 枣强县| 贞丰县| 高雄县| 黄冈市| 新营市| 岐山县| 山东省| 吉安县| 怀仁县|