1. 程式人生 > >Windows環境下寫Linux sh腳本的一次挖坑和填坑

Windows環境下寫Linux sh腳本的一次挖坑和填坑

utf-8 技術分享 成功 格式 挖坑 名稱 d+ 執行 man

最近在研究Docker集群和安裝的時候,需要準備若幹臺機器。所以我為節約時間,打算批量復制VM機器,然後用sh腳本命令執行機器名稱和IP等基礎配置信息的修改。

具體操作:我在windows環境下,用Notepad++編輯如下腳本,並且保存編碼格式為UTF-8無編碼BOM。

但是測試發現,linux會自動將命令行尾部的\r寫到執行命令裏面。

技術分享圖片

技術分享圖片

一、失敗過程,如下

>> sh -x /opt/command/batch_modify_servername_all.sh

技術分享圖片

然後,我們試著找剛才創建的ifcfg-eno01文件,卻提示找不到,原因就是windows自動給每行命令後面加了\r,結果linux把他當作文件名的一部分了。

技術分享圖片

二、成功過程,如下

先在vim 模式下,執行:set ff=unix,來刪除windows環境下給sh腳本每行尾部自動加入的\r。

技術分享圖片

然後,我們試著找剛才創建的ifcfg-eno01文件,這次就可以找到了,如下

技術分享圖片

總結,在windows環境下任何工具編寫sh腳本文件,在上傳到linux環境後執行sh腳本前千萬記得要set ff=unix
去掉每行尾部多余的\r。

最後,附上代碼:(如果對您有幫助,請幫我點贊,各位的支持也是我寫作的動力,謝謝)

https://files.cnblogs.com/files/itshare/batch_modify_servername_all.sh

Windows環境下寫Linux sh腳本的一次挖坑和填坑