16

我试图在 wget 中设置标题。当我在终端中运行以下命令时,它可以工作wget -d --header="User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11"' http://website.com -O index

但是一旦我将相同的变量放入变量并尝试运行 bash 脚本,它就不起作用了。

我试过的

header='-d --header="User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11"'
wget "$header" http://google.com -O index

错误

wget: invalid option -- ' '
wget: invalid option -- '-'
wget: invalid option -- '-'
Usage: wget [OPTION]... [URL]...
4

5 回答 5

22

使用变量时必须使用双引号。否则它将被扩展为多个单词。另一方面,不需要两次引用变量值。以下应该有效:

header='--header=User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11'
wget "$header" http://website.com -O index

编辑:如果要对多个参数使用变量,请使用数组:

args=(-d '--header=User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11')
wget "${args[@]}" http://website.com -O index
于 2013-08-05T17:13:04.660 回答
1

评论:'nosid 关于 bash 数组的技巧对我有用。就我而言,相关代码是:

WGET_OPTS="-r -N -nd -np -nH --timeout=120 --tries=3"
WGET_OPTS_ARRAY=(${WGET_OPTS// / })
wget "${WGET_OPTS_ARRAY[@]}" -A "$FILE_PAT" -P "$TO_DIR" "$FROM_URL"
于 2013-11-14T04:49:40.837 回答
1

而不是这个

wget $header http://website.com -O index

尝试这个,

wget "$header" http://website.com -O index

当您为其分配标题变量时,标题文本中的空格正在分解。要解决这个问题,您必须用引号“”将变量括起来。

评论后: 试试这个 -

someheader="-d --header='User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11'"
wget "$someheader" http://website.com -O index

名称标头似乎与您的 --header 冲突。或者,可能是引号,而不是复制它们并重试。还是,奇怪!

于 2013-08-05T17:13:15.580 回答
1

你只需要-d像这样逃跑: header='\-d --header="User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11"'

于 2018-07-08T05:14:42.010 回答
0

选项“-d”显示yuor请求的标头,并且不包含在标头shell变量中,例如“-O index.html”选项:用于将输出保存到本地文件“index.html”中。如果你执行:

header='--header="User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11"'
wget -d "$header" http://google.com -O index

它应该工作。

于 2020-12-10T18:19:24.177 回答