linux 在bash中设置wget --header=无效

hiz5n14c  于 2023-05-06  发布在  Linux
关注(0)|答案(5)|浏览(250)

我正在尝试在wget中设置header。在命令行中,当我运行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时,它按预期工作。
但是,一旦我将头文件更改为变量并尝试运行以下wget命令,它就停止工作了:

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]...
bmp9r5qi

bmp9r5qi1#

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

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
2ekbmq32

2ekbmq322#

而不是这个

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

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

ghhaqwfi

ghhaqwfi3#

评论:‘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"
2ul0zpep

2ul0zpep4#

你只需要像这样转义-dheader='\-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"'

ahy6op9u

ahy6op9u5#

选项“-d”显示您的请求的头,并且不包含在头壳变量中,如“-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

应该能成功

相关问题