当在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,脚本可以顺利执行。容器也就可以正常启动了。