为什么我的命令不能在shell脚本中工作,而是在bash中?

时间:2013-12-31 12:27:43

标签: linux bash shell

我面临两个问题,其原因可能是相同的,这就是我在一个问题中发布它们的原因。

这是我的小shell脚本:

#!/bin/bash
wget "https://phantomjs.googlecode.com/files/phantomjs-1.9.2-linux-i686.tar.bz2"

然后我说./script

我得到bash: ././script: /bin/bash^M: bad interpreter: No such file or directory

然后我对自己说,好吧,试试bash script代替./script

似乎有效,但网址是:

--2013-12-31 12:24:55--  https://phantomjs.googlecode.com/files/phantomjs-1.9.2-
linux-i686.tar.bz2%0D
Resolving phantomjs.googlecode.com... 173.194.69.82, 2a00:1450:4008:c01::52
Connecting to phantomjs.googlecode.com|173.194.69.82|:443... connected.
HTTP request sent, awaiting response... 404 Not Found
2013-12-31 12:25:01 ERROR 404: Not Found.

您是否认识到我的网址在文件名后的第2行附加了2%0D

当我在shell中运行命令时,而不是脚本,它完全正常。

这两个问题是否具有相同的根?为什么附加2%0D?我已经找了一个空的空间但没找到它。

2 个答案:

答案 0 :(得分:4)

您可能使用编辑器创建DOS行结尾(\ r \ n)来编辑脚本。使用其他编辑器或使用dos2unix

等工具进行转换

答案 1 :(得分:1)

您应该将您的EOL转换更改为Unix。 如果您使用的是Windows,则可以使用Notepad++