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

rab*_*ius 11 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
Run Code Online (Sandbox Code Playgroud)

错误

wget: invalid option -- ' '
wget: invalid option -- '-'
wget: invalid option -- '-'
Usage: wget [OPTION]... [URL]...
Run Code Online (Sandbox Code Playgroud)

nos*_*sid 16

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

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
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)