文章目录
- 报错原因:
- 解决办法:
- 方法一:用 `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
命令非法,通常是因为文件开头有 BOM 或 Windows 换行符\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 或其他编辑器手动改
- 用 VSCode 打开
wait_for_gpu.sh
。 - 右下角看行尾,通常会显示
CRLF
。 - 点击它,改为
LF
。 - 重新保存文件。
- 重新运行
bash wait_for_gpu.sh
。
总结
原因: Windows 和 Linux 换行符不同,脚本是 Windows 风格,Linux 执行会报错。
推荐解决方法:
dos2unix wait_for_gpu.sh
即可完美解决!🎯