从windows上传到linux服务器的shell脚本,用sh 执行报错
test.sh: line 2: $'\r': command not found
报错解释:
这个错误通常发生在Windows系统中使用了Unix/Linux的换行符(LF),而在Unix/Linux系统中使用了Windows的行尾符(CRLF)时。$'\r': command not found
表明shell尝试执行一个以回车符(Carriage Return, CR)结尾的命令,但是CR后面没有跟随换行符(Line Feed, LF),导致shell无法识别命令的结束,并报错。
解决思路:
-
转换文件格式:使用
dos2unix
命令或者sed
等工具将文件的行尾符从CRLF转换为LF。
dos2unix filename
sed -i 's/\r//' filename
-
检查脚本中是否有不正确的命令,确保每个命令都以换行符结束。
-
如果是在编辑器中编辑脚本,确保编辑器使用正确的文件格式。
-
如果是从Windows共享文件夹中获取的脚本,请在Unix/Linux系统中重新创建文件并确保使用正确的换行符。
##安装dos2unix
sudo yum install dos2unix
##使用dos2unix
dos2unix test.txt