當在Linux中查看文件時發現了^M,你可能就需要注意文件的分隔符了。使用的不是Linux的文件分割符,而是window的文件分隔符。
解決的辦法也很簡單,使用dos2unix轉換文件的分隔符即可。
最近的工作中也遇到了一次這個問題。
docker容器啟動不起來,使用k8s和docker的logs命令查看,提示的都是shell腳本缺少then。
開始是覺得if和then的匹配除了問題,確認不是這個問題后。 使用docker run -it xxx:xxx sh的方式先啟動容器。
找到對應的腳本,加上set -x set+x來調試腳本,發現第一個if就出錯了,而且文件中就有^M。
使用dos2unix,腳本可以順利執行。容器也就可以正常啟動了。