我正在尝试从 Pastebin 上传和下载 bash 脚本,上传很简单,只需复制和粘贴,下载就没那么容易了。
我正在尝试下载两个脚本,这些是命令:
wget http://pastebin.com/raw.php?i=M6iQ6RaY --output-document=ts3update
wget http://pastebin.com/raw/e11R2wkP --output-document=ts3restore
当我尝试运行它们时,出现以下错误:
./ts3update: /bin/bash^M: bad interpreter: No such file or directory
然后,如果我删除解释器行,我就会得到:
./ts3update: line 4: $'\r': command not found
和这个:
./ts3restore: line 3: $'\r': command not found
./ts3restore: line 7: syntax error near unexpected token `$'in\r''
'/ts3restore: line 7: ` case $yn in
为什么会发生这种情况?我该如何解决?当我阅读或 grep 文件时,我没有发现任何实例^M或者'\r'为什么 bash 会看到类似的东西,而其他东西却看不到?
答案1
Michael Homer 指出的答案是,pastebin 已将 Windows CRLF 行结尾添加到我的文件中。为了修复它,我运行了以下命令:
sed -i 's/\r$//' ts3update
sed -i 's/\r$//' ts3restore
并且脚本执行成功。答案取自这里:在 Windows 上编辑的 Bash/Korn shell 脚本会抛出错误“...^M:未找到”