繁体   English   中英

在 bash 中设置 wget --header= 不起作用

[英]Setting wget --header= in bash doesn't work

我试图在 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]...

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

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

而不是这个

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 冲突。 或者,可能是引号,而不是复制它们并重试。 还是,怪!

评论:'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"

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

选项“-d”显示您请求的头部,并且没有包含在头部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

它应该工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM