在Linux或Unix环境下,遇到`$'\r': command not found`这样的错误提示,通常是因为脚本文件是在Windows环境下创建的,Windows系统默认使用CRLF(即\r\n)作为换行符,而Linux或Unix系统则使用LF(即\n)作为换行符。
因此,当你在Linux或Unix环境下运行一个从Windows复制过来的shell脚本时,可能会因为\r字符被识别为命令而导致上述错误。
解决方法如下:
1. 使用`dos2unix`工具转换脚本文件格式:
dos2unix inspection.sh
这个命令会将inspection.sh文件中的CRLF换行符转换为LF,使其能在Linux或Unix环境下正常执行。
2. 如果没有`dos2unix`工具,也可以使用`sed`命令进行转换:
sed -i 's/\r$//' inspection.sh
这条命令会删除所有行尾的\r字符。
3. 在未来的跨平台编写脚本时,建议在Windows下使用支持Unix换行符的编辑器(如Notepad++等),并设置其以Unix格式保存文件。在Linux下编写则无需担心这个问题。