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

时间:2013-08-05 17:04:31

标签: linux bash wget

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

5 个答案:

答案 0 :(得分:15)

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

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

答案 1 :(得分: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"

答案 2 :(得分: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"'

答案 3 :(得分:0)

而不是这个

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

答案 4 :(得分:0)

选项“ -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

应该可以。