gpt4 book ai didi

linux - 无法通过 wget 传递变量内带有引号的变量

转载 作者:太空宇宙 更新时间:2023-11-04 09:45:55 29 4
gpt4 key购买 nike

我正在尝试编写一个 wget 命令脚本来下载网页及其所有附件和 jpeg 等。

当我手动输入脚本时,它有效,但我需要运行超过 35000 次才能存档一个我无法控制的旧网站(国际公司政治,但我是数据的所有者) .

我的问题在于改变 session 参数。

到目前为止我的脚本如下:

cnt=35209
# initialise the headers
general_settings='-4 -P xyz --restrict-file-names=windows -nc --limit-rate=250k'
html_page_specific='--convert-links --html-extension'
proxy='--proxy-user=xxxxxx --proxy-password=yyyyyyy'
session="--header=\'Host: mywebsite.com:9090\' --header=\'User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:20.0) Gecko/20100101 Firefox/20.0\'"
address=http://mywebsite.com:9090/browse/item-$cnt

echo $general_settings $proxy $session $cookie $address
echo
echo
echo Getting item-$cnt...

#while [ $cnt -gt 0 ]
#do
# # get the page
wget --debug $general_settings $html_page_specific $proxy $session $cookie $address

# now get the attachments, pdf, txt, jpg, gif, sql, etc...
# wget -A.pdf $general_settings -r $proxy $session $cookie $address
# wget -A.txt $general_settings -r $proxy $session $cookie $address
# wget -A.jpg $general_settings -r $proxy $session $cookie $address
# wget -A.gif $general_settings -r $proxy $session $cookie $address
# wget -A.sql $general_settings -r $proxy $session $cookie $address
# wget -A.doc $general_settings -r $proxy $session $cookie $address
# wget -A.docx $general_settings -r $proxy $session $cookie $address
# wget -A.xls $general_settings -r $proxy $session $cookie $address
# wget -A.xlsm $general_settings -r $proxy $session $cookie $address
# wget -A.xlsx $general_settings -r $proxy $session $cookie $address
# wget -A.xml $general_settings -r $proxy $session $cookie $address
# wget -A.ppt $general_settings -r $proxy $session $cookie $address
# wget -A.pptx $general_settings -r $proxy $session $cookie $address
# wget -A.png $general_settings -r $proxy $session $cookie $address
# wget -A.ps $general_settings -r $proxy $session $cookie $address
# wget -A.mdb $general_settings -r $proxy $session $cookie $address
# ((cnt=cnt-1))
#
#done

但是当我运行脚本时,我得到以下输出

Getting item-35209...
Setting --inet4-only (inet4only) to 1
Setting --directory-prefix (dirprefix) to xyz
Setting --restrict-file-names (restrictfilenames) to windows
Setting --no (noclobber) to 1
Setting --limit-rate (limitrate) to 250k
Setting --convert-links (convertlinks) to 1
Setting --html-extension (htmlextension) to 1
Setting --proxy-user (proxyuser) to xxxxx
Setting --proxy-password (proxypassword) to yyyyy
Setting --header (header) to \'Host:
Setting --header (header) to 'Cookie:
DEBUG output created by Wget 1.11.4 Red Hat modified on linux-gnu.

如您所见,Host 和 Cookie 部分的格式不正确,导致 wget 命令无法登录和提取数据。

我一直在阅读 bash 手册页、谷歌搜索,并尝试了 SO 的一些相关建议,但我仍然无法执行命令。

有人愿意告诉我在 veriables 中引用引号的正确方法吗?

谢谢,

最佳答案

引用字符串或变量中的引号是普通字符,不是引用字符。没有办法改变这一点。改为使用数组:

A=(a b 'c d' 'e f')
cmd "${A[@]}"

使用四个参数 abc de f 调用 cmd >.

(您可以使用 eval 实现类似的效果,但更容易出错。在您的情况下,使用数组更方便。)

关于linux - 无法通过 wget 传递变量内带有引号的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16397264/

29 4 0
文章推荐: java - 捕获java反射中的特定异常
文章推荐: html -
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com