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
字符。
wait_for_gpu.sh
。CRLF
。LF
。bash wait_for_gpu.sh
。原因: Windows 和 Linux 换行符不同,脚本是 Windows 风格,Linux 执行会报错。
推荐解决方法:
dos2unix wait_for_gpu.sh
即可完美解决!