执行 shell 脚本 \r 问题解决
最近在写用 shell 写构建脚本模板build.sh,开发测试再根据自己需要修改,因为我使用的是mac 来写,所以一直没有出现问题,但交付给测试去用的时候,测试给我抛了个异常:
纳闷,我写的代码怎么会有 bug 呢!!!
一看应该是 windows 的回车换行跟 linux 换行差异,百度了一下,的确有很多类似问题,在 windows 下编辑 shell 文件,输入的回车是 "\r\n" ,导致在 linux 下执行 shell 脚本时报这个 \r 的错。
怎么办?想办法解决。
让开发或测试自己想办法转化或者在linux环境编辑这个 build.sh 很明显不现实,在服务器安装 dos2unix 来转化 build.sh 我又要在主从节点分别重新构建镜像,麻烦。想了想用替换的方式看能否实现,百度一下,使用 sed -i 's/\r//'
来处理 build.sh 后再执行,即 sed -i 's/\r//' build.sh && bash build.sh
,完美解决问题,大功告成!!!
本作品采用《CC 协议》,转载必须注明作者和本文链接
set ff=unix
@admin_user 这个得在vi编辑器才有效吧,如果在windows用 其它编辑器应该就不起作用了
我写的代码怎么会有 bug 呢!!!
@Joy_he :simple_smile::simple_smile::simple_smile:
更简单的办法:
更优雅的办法:
让你的开发和测试不要再用记事本了,2333。
@Wi1dcard build.sh是放在项目根目录的,编辑的话应该一般就在phpstorm里编辑了。PS:用户体验不好,产品会推不出去
@雪花飘 在 PHPStorm 可以设置换行符为 LF 的,任何现代编辑器都具备这个功能,更简单的办法是在仓库加入
.editorconfig
文件,这样所有人都会采用统一的编码、BOM 头、换行符以及缩进配置。我认为这是团队编码规范需要特别注意的问题之一。@Wi1dcard 赞!