Windows 10 Git Bash环境下shell脚本内echo命令无输出问题咨询
问题原因及解决方案
- 脚本换行符格式不兼容
Windows系统下使用默认记事本类编辑器编写shell脚本时,默认行尾分隔符为CRLF(\r\n),而Git Bash的bash运行环境仅识别LF(\n)作为行尾分隔符。此时echo命令执行时会把行尾的\r作为输出内容的一部分,该回车符会让光标跳转回当前行开头,后续git命令的输出会直接覆盖echo的输出内容,最终表现为echo无输出。
解决方法:使用VS Code、Notepad++等编辑器将脚本的行尾格式修改为LF后重新保存,也可直接在Git Bash中执行转换命令:dos2unix script.sh - echo命令被别名覆盖
source执行(即. 脚本名的执行方式)会继承当前shell的全部别名配置,若你之前给echo配置了带额外参数的别名,可能会导致输出异常。
验证方法:在脚本echo行前新增一行type echo,执行脚本如果输出不是echo is a shell builtin,即可确认是别名问题。
解决方法:脚本中改用内置echo调用,将原echo行修改为builtin echo "Running a few git commands in batch",也可在脚本开头新增unalias echo 2>/dev/null取消别名影响。 - 标准输出被重定向
检查执行脚本的命令是否额外加了>/dev/null之类的重定向参数,或者脚本开头是否有exec > /dev/null这类全局重定向配置,这类配置会直接丢弃echo的标准输出内容。
内容的提问来源于stack exchange,提问作者SJB
相关产品推荐
相关产品推荐

