1 回答
- 最新
- 投票最多
- 评论最多
0
【以下的回答经过翻译处理】 这个多余的^M
符号(即Ctrl-M)阻止了整个脚本被正确解释。
这个问题通常出现在使用MSDOS / Windows系统编写,但在Linux系统中使用的脚本中,因为行结尾的差异。
在基于Unix的操作系统中,行以\n
结尾,但MSDOS / Win基于系统以\r\n
结尾。
在基于Linux的系统中,您可以通过运行以下命令显示您准备好的脚本
cat -e some-script.sh
结果将与以下内容类似
#!/bin/bash^M$
... ...^M$
$
是常规的Unix行尾符号。 Windows使用一个额外的^M
,这个符号不被Unix系统识别。这就是为什么在运行Linux的SageMaker Notebook生命周期配置中,您的脚本被解释为 /bin/bash^M
。
为了解决此问题,请将脚本转换为基于Unix的结尾并更新生命周期配置。要实现这一点,您可以在Windows中使用Notepad ++
。您可以转到“编辑”菜单,选择“EOL Conversion”子菜单,然后从出现的选项中选择“UNIX / OSX格式”。下次保存文件时,一切顺利的话,其行结尾将以UNIX样式的行结尾保存。
或者,您可以将脚本放在Linux环境中,例如具有Amazon Linux 2的EC2实例,并通过sudo yum install dos2unix安装dos2unix。安装后,您可以通过以下方式转换文件
dos2unix -n file.sh output.sh
转换后,请使用新脚本更新LCC。您可以通过以下方式验证^M
已经被删除了
cat -e your_script.sh
该输出将打印出所有特殊字符。
相关内容
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 年前