wget在终端中工作,但不在shell脚本中工作

wget在终端中工作,但不在shell脚本中工作,shell,wget,Shell,Wget,我有一个简单的shell脚本,如下所示 #!/usr/bin/env bash wget -O glove.840B.300d.zip http://nlp.stanford.edu/data/glove.840B.300d.zip 当我使用sh命令运行它时,我得到以下错误 --2017-06-29 20:35:41-- http://nlp.stanford.edu/data/glove.840B.300d.zip%0D Resolving nlp.stanford.edu (nlp.st

我有一个简单的shell脚本,如下所示

#!/usr/bin/env bash
wget -O glove.840B.300d.zip http://nlp.stanford.edu/data/glove.840B.300d.zip
当我使用sh命令运行它时,我得到以下错误

--2017-06-29 20:35:41--  http://nlp.stanford.edu/data/glove.840B.300d.zip%0D
Resolving nlp.stanford.edu (nlp.stanford.edu)... 171.64.67.140
Connecting to nlp.stanford.edu (nlp.stanford.edu)|171.64.67.140|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://nlp.stanford.edu/data/glove.840B.300d.zip%0d [following]
--2017-06-29 20:35:41--  https://nlp.stanford.edu/data/glove.840B.300d.zip%0d
Connecting to nlp.stanford.edu (nlp.stanford.edu)|171.64.67.140|:443... connected.
HTTP request sent, awaiting response... 404 Not Found
2017-06-29 20:35:41 ERROR 404: Not Found.

但是当我从终端运行相同的
wget
命令(用shell脚本编写)时,它工作得很好!我的shell脚本有什么问题?我缺少什么?

请注意最后的%0d。似乎在某种程度上,您在Linux环境中使用了DOS/Windows行结束符。%0d是“回车”字符,因为在Windows CR中,换行符使用LF(回车换行符)。Unix只需要LF,并在命令行中包含额外的字符


请参见最后的%0d注释。似乎在某种程度上,您在Linux环境中使用了DOS/Windows行结束符。%0d是“回车”字符,因为在Windows CR中,换行符使用LF(回车换行符)。Unix只需要LF,并在命令行中包含额外的字符


请参见

您已使用使用DOS行结尾的内容编辑了脚本。因此,
wget
在行尾看到一个伪回车(hex 0D)


将DOS行结尾(CR-LF)替换为Unix行结尾(LF),一切都会好起来。

您已经使用使用DOS行结尾的东西编辑了脚本。因此,
wget
在行尾看到一个伪回车(hex 0D)

将DOS行结束符(CR-LF)替换为Unix行结束符(LF),一切都会好起来