Shell 腳本出現 $'\r': command not found

背景介紹:

在服務器部署jar包,以前都是在Windows打包然後上傳到服務器,再通過命令 java -jar xxx.jar 部署,感覺很繁瑣,所以就寫了個腳本,自動 pull 遠程倉庫代碼,然後打包,部署。

出現問題:

先寫了一步獲取 jar 包進程的 pid命令

#!/bin/sh
pid=$(ps -ef|grep bigbang.jar | grep  -v grep | awk '{print $2}')
echo $pid

當執行這個腳本時,報錯如下:
在這裏插入圖片描述

分析原因:

因爲這個腳本最開始是windows下寫好,上傳到服務器上的,windows 下回車符linux下回車符解析是不一樣的,所以纔會出現上述問題。

解決方法:

在腳本中使用 set ff=unix ,告訴 vi 編輯器,使用unix換行符

在這裏插入圖片描述
這樣再次執行這個腳本時,就能成功獲取線程pid了
在這裏插入圖片描述

貼一個從遠程倉庫拉去最新代碼、打包、部署的腳本:

#! /bin/sh

#要部署jar的名字
jarName=bigbang.jar

#項目的根目錄
cd /usr/local/bigbang/bigbang-git/bigbangspring

#拉去倉庫最新代碼
git pull

#開始使用maven打包
mvn clean package -DskipTests

#打包結束,cd 到項目target目錄,打好jar就在該目錄下面
cd /usr/local/bigbang/bigbang-git/bigbangspring/target

#殺死當前已部署的jar包進程
pid=$(ps -ef|grep $jarName | grep -v grep | awk '{print $2}')
kill -9 ${pid}

#開始部署jar包
nohup java -jar -Dfile.encoding=UTF-8 $jarName >/dev/null 2>&1 &

爲了更好地看到腳本執行流程,可以在每一步輸出相應的提示語句,這樣整個流程就比較清楚,腳本執行到哪一步報錯,都能一清二楚,快速定位錯誤位置。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章