执行 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 协议》,转载必须注明作者和本文链接
雪花飘
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 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年前 评论

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