Unix\Linux 执行 shell 报错:“$'\r': 未找到命令” 的解决办法
原因
原因是因为 shell 脚本是在 Windows 编写导致的换行问题,具体原因是 Windows 的换行符号为 CRLF
(\r\n
),而 Unix\Linux 为 LF
(\n
),Macintosh 为(\r)
名称解释
缩写 |
全称 |
ASCII转义 |
说明 |
---|---|---|---|
CR |
Carriage Return |
\r |
回车,Macintosh 的回车符合 |
LF |
Linefeed |
\n |
换行,Unix\Linux 的换行符 |
CRLF |
Carriage Return & Linefeed |
\r\n |
回车并换行,Windows 的换行符 |
解决一:在windows 中解决
可以通过notepad++ 查看所有字符
双击下图红框进行修改
修改后
解决二:在unix机解决
sed -i "s/^M//g" windows.sh 或 sed -i "s/\r//g" windows.sh