我试图在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
名称标题似乎与您的 – 标题冲突。 或者,可能是引号,而不是复制键入并重试。 仍然,奇怪!