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

我试图在wget中设置标题。 当我在terminal运行下面​​的命令时,它的工作原理是: 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

但是一旦我把相同的variables,并尝试运行一个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 

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

而不是这个

 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 

名称标题似乎与您的 – 标题冲突。 或者,可能是引号,而不是复制键入并重试。 仍然,奇怪!