关于linux:为什么我的命令不能在shell脚本中工作但在bash中?

Why doesn't my commands work in shell scripts but in bash?

本问题已经有最佳答案,请猛点这里访问。

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

这是我的小shell脚本:

1
2
#!/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

它似乎工作,但URL是:

1
2
3
4
5
6
--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.

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

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

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


您可能使用编辑器创建DOS行结尾( r n)来编辑脚本。 使用其他编辑器或使用dos2unix之类的工具进行转换


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