执行 shell 脚本 \r 问题解决

最近在写用 shell 写构建脚本模板build.sh,开发测试再根据自己需要修改,因为我使用的是mac 来写,所以一直没有出现问题,但交付给测试去用的时候,测试给我抛了个异常:
file
纳闷,我写的代码怎么会有 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 协议》,转载必须注明作者和本文链接
雪花飘
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 9

@admin_user 这个得在vi编辑器才有效吧,如果在windows用 其它编辑器应该就不起作用了

5年前 评论
KayuHo

我写的代码怎么会有 bug 呢!!!

5年前 评论

@Joy_he :simple_smile::simple_smile::simple_smile:

5年前 评论

更简单的办法:

tr -d '\r' < script.sh | bash
5年前 评论

更优雅的办法:

让你的开发和测试不要再用记事本了,2333。

5年前 评论

@Wi1dcard build.sh是放在项目根目录的,编辑的话应该一般就在phpstorm里编辑了。PS:用户体验不好,产品会推不出去

5年前 评论

@雪花飘 在 PHPStorm 可以设置换行符为 LF 的,任何现代编辑器都具备这个功能,更简单的办法是在仓库加入 .editorconfig 文件,这样所有人都会采用统一的编码、BOM 头、换行符以及缩进配置。我认为这是团队编码规范需要特别注意的问题之一。

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!