当前位置: 首页 > news >正文

【Linux 下的 bash 无法正常解析, Windows 的 CRLF 换行符问题导致的】

文章目录

      • 报错原因:
      • 解决办法:
        • 方法一:用 `dos2unix` 修复
        • 方法二:手动转换换行符
        • 方法三:VSCode 或其他编辑器手动改
      • 总结

这个错误很常见,原因是你的 wait_for_gpu.sh 脚本 文件格式不对,具体来说是 Windows 的 CRLF 换行符问题 导致的,Linux 下的 bash 无法正常解析。

hadoop@hadoop:~/anaconda3$ bash wait_for_gpu.sh
: invalid option line 2: set: -
set: usage: set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
wait_for_gpu.sh: line 3: $'\r': command not found
wait_for_gpu.sh: line 7: $'\r': command not found
wait_for_gpu.sh: line 9: syntax error near unexpected token $'{\r''
'ait_for_gpu.sh: line 9: wait_for_gpu() 

报错原因:

  • set: - 报错,提示 set 命令非法,通常是因为文件开头有 BOMWindows 换行符 \r\n
  • $'\r': command not found,意思是文件里包含 \r,Linux 无法识别。
  • syntax error near unexpected token \r 也是因为多了 \r 字符。

解决办法:

方法一:用 dos2unix 修复

直接运行:

dos2unix wait_for_gpu.sh

然后重新执行:

bash wait_for_gpu.sh

方法二:手动转换换行符

如果 dos2unix 没有装,可以手动替换:

sed -i 's/\r$//' wait_for_gpu.sh

这会去掉每一行末尾的 \r 字符。


方法三:VSCode 或其他编辑器手动改
  1. 用 VSCode 打开 wait_for_gpu.sh
  2. 右下角看行尾,通常会显示 CRLF
  3. 点击它,改为 LF
  4. 重新保存文件。
  5. 重新运行 bash wait_for_gpu.sh

总结

原因: Windows 和 Linux 换行符不同,脚本是 Windows 风格,Linux 执行会报错。

推荐解决方法:

dos2unix wait_for_gpu.sh

即可完美解决!🎯

相关文章:

  • 记忆力训练day24
  • C语言入门教程100讲(3)代码注释
  • 【免费】2000-2019年各省地方财政印花税数据
  • k8s--集群内的pod调用集群外的服务
  • 无法写入文件:(FileSystemError): Error: EPERM: operation not permitted, open...)
  • 【即插即用涨点模块】LSK大选择性核:自适应地捕捉遥感图像目标,实现暴力涨点【附源码+注释】
  • Android Compose 线性布局(Row、Column)源码深度剖析(十)
  • 【C#】WinForm自定义控件及窗体
  • Shell正则表达式
  • Java锁等待唤醒机制
  • 【Linux】交叉编译2
  • 前端Wind CSS面试题及参考答案
  • 【数据分享】2014-2024年我国各城市逐年空气质量指数(AQI)数据
  • 设计心得——如何实现接口
  • 红宝书第十一讲:超易懂版「ES6类与继承」零基础教程:用现实例子+图解实现
  • 【transformer理论+实战(三)】必要的 Pytorch 知识
  • 在uml中,为什么用泛化而不用继承这个词语?
  • Python模块与包
  • 一、MySQL8的my.ini文件
  • linux ptrace 图文详解(三) PTRACE_ATTACH 跟踪程序
  • 中国-拉共体论坛第四届部长级会议北京宣言
  • 国务院关税税则委员会公布公告调整对原产于美国的进口商品加征关税措施
  • 警方通报:某博主遭勒索后自杀系自导自演,已立案调查
  • 《AI×SCIENCE十大前沿观察》9:合成数据和数据基础设施
  • 60余年产业积累,“江苏绿心”金湖炼就“超级石油工具箱”
  • 第1现场 | 印巴停火次日:当地民众逐渐恢复正常生活