Linux 在bash中设置wget--header=不会';行不通

Linux 在bash中设置wget--header=不会';行不通,linux,bash,wget,Linux,Bash,Wget,我试图在wget中设置标题。当我在终端中运行下面的命令时,它会工作wget-d--header=“用户代理:Mozilla/5.0(Windows NT 6.0)AppleWebKit/537.11(KHTML,像Gecko)Chrome/23.0.1271.97 Safari/537.11”'http://website.com -O索引 但是,一旦我在变量中加入相同的变量并尝试运行bash脚本,它就不起作用了 我试过的 header='-d --header="User-Agent: Moz

我试图在wget中设置标题。当我在终端中运行下面的命令时,它会工作
wget-d--header=“用户代理:Mozilla/5.0(Windows NT 6.0)AppleWebKit/537.11(KHTML,像Gecko)Chrome/23.0.1271.97 Safari/537.11”'http://website.com -O索引

但是,一旦我在变量中加入相同的变量并尝试运行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
错误


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

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

评论:“诺西德关于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"

您只需像这样转义
-d

header='\-d--header=“用户代理:Mozilla/5.0(Windows NT 6.0)AppleWebKit/537.11(KHTML,类似Gecko)Chrome/23.0.1271.97 Safari/537.11””

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

它应该可以工作。

尝试在变量定义周围使用单引号和双引号。双引号可以解释,单引号是精确的:
header='--header=“…””
@rabotalius:echo“$header”作为输出发出什么?在wget命令之前将其添加到脚本中并检查。
/test.sh-d--header=“用户代理:\Mozilla/5.0\(Windows NT 6.0)\AppleWebKit/537.11\(KHTML,比如Gecko)\Chrome/23.0.1271.97\Safari/537.11”wget:invalid option--“wget:invalid option--”wget:invalid option--“wget:invalid option--”用法:wget[option]。。。[URL]。。。请尝试
wget--help'以获得更多选项。`没有像#wget这样先注释掉wget命令。。。并且请只提供echo“$header”命令的输出。
-d--header=“用户代理:Mozilla/5.0(Windows NT 6.0)AppleWebKit/537.11(KHTML,像Gecko)Chrome/23.0.1271.97 Safari/537.11”
是的,现在在echo“$header”之后,放置这个-wget“$header”-索引
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