更多内容欢迎关注我(持续更新中,欢迎Star✨) Github:CodeZeng1998/Java-Developer-Work-Note 技术公众号:CodeZeng1998(纯纯技术文) 生存公众号:好锅(Life is more than code) CSDN: CodeZeng1998 其他平台:CodeZeng1998、好锅
问题描述:Linux 环境运行 Windows 环境编写的 Shell 脚本,出现如下报错。
报错信息:
[127.0.0.1@localhost bin]# sh xxx.sh start
xxx.sh: line 4: $'\r': command not found
xxx.sh: line 6: syntax error near unexpected token $'{\r''
'xxx.sh: line 6: usage(){
复制代码
错误原因:存在换行符 (\r) 的问题。这种情况通常发生在脚本在 Windows 系统上编辑或创建后移动到类 Unix 系统而没有正确转换行尾换行符的情况下。
解决方案: 方案一:
sed -i 's/\r$//' xxx.sh
复制代码
这个命令使用 sed 工具来从一个文件中移除 Windows 操纵系统中的行尾回车符(Carriage Return,\r),通常在类Unix系统中使用。
sed: 是一个流编辑器,用于处理和转换文本。
-i: 是 sed 命令的选项,表示直接在文件中举行编辑(in-place)。
's/\r$//': 是 sed 的替换命令,用来查找每行结尾的 \r(回车符)并将其替换为空字符串(即删除)。
xxx.sh: 是要编辑的文件名,这里假设是一个 Shell 脚本文件。
这条命令的作用是在 xxx.sh 文件中去除每行结尾的 Windows 格式的回车符,使得文件在类Unix系统中可以大概正常表现和运行。
方案二:
dos2unix xxx.sh
复制代码
**这个命令 dos2unix xxx.sh
用于将一个文本文件从 DOS 或 Windows 格式转换为 Unix 格式。**在 Unix 系统中,换行符只使用换行(Line Feed,\n),而在 DOS 和 Windows 系统中,换行符使用回车和换行(Carriage Return + Line Feed,\r\n)的组合。
dos2unix: 是一个命令行工具,专门用来将 DOS 或 Windows 格式的文本文件转换为 Unix 格式。
上图是由 Pic 生成的
关键词:A peaceful beach at sunset with gentle waves and a colorful sky
更多内容欢迎关注我(持续更新中,欢迎Star✨) Github:CodeZeng1998/Java-Developer-Work-Note 技术公众号:CodeZeng1998(纯纯技术文) 生存公众号:好锅(Life is more than code) CSDN: CodeZeng1998 其他平台:CodeZeng1998、好锅