Windows環境下寫Linux sh腳本的一次挖坑和填坑
阿新 • • 發佈:2018-05-05
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腳本的一次挖坑和填坑