如何使嵌套双引号在 bash 解释器中幸存下来?

2024-02-01

鉴于下面的上下文..

是否存在任何可以插入到 $WGETOPT 定义中的神奇语法,以允许“吸收”$USERAGENT 变量,并且仍然允许调用 wget 命令,如下所示syntax 1?我目前已经求助于使用“eval”,但我对此并不满意,但也许这是我可以在这里做我想做的事情的唯一方法?!

#params
USERAGENT="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
PROXYSWITCH=off
WGET=wget
WGETOPT="--cut-dirs=3 -r -l10 -dnv -x -H --timestamping --limit-rate=100K --proxy=$PROXYSWITCH -U \"$USERAGENT\"" 
WGETOPTminusUSERAGENT="-cut-dirs=3 -r -l10 -dnv -x -H --timestamping --limit-rate=100K --proxy=$PROXYSWITCH" 
URL=http://blah

#commands
#1.
    $WGET $WGETOPT $URL
#2.
    $WGET "$WGETOPT" $URL
#3.
    eval "$WGET $WGETOPT $URL"
#4. 
    $WGET $WGETOPTminusUSERAGENT -U "$USERAGENT" $URL

#1。结果是:

DEBUG output created by Wget 1.11.4 on Windows-MinGW.
Enqueuing http://(compatible;/ at depth 0
Queue count 1, maxcount 1.
Host `(compatible;' has not issued a general basic challenge.
...
Setting --user-agent (useragent) to "Mozilla/4.0
...

很明显,为什么“\”没有在 bash 解释器中“幸存”。

#2。结果是:

wget: --cut-dirs: Invalid number `3 -r -l10 -dnv -x -H --timesta.. ..indows NT 5.1)"'.'

在这里,双引号导致传递单个参数,wget 从中解析命名参数,然后假设(正确地)其余部分是其参数,而不管空格如何。

#3。有效,我正在使用它,但我确实记得因使用邪恶/评估而受到惩罚!

#4。我假设工作正常,我没有测试它,因为那不是我想要的方式!

..因此就有这个问题。

cheers


放大@Ignacio的答案:如果我理解这里的目标,最好的答案是将选项存储在数组中。

#params
USERAGENT="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
PROXYSWITCH=off
WGET=wget
WGETOPT=(--cut-dirs=3 -r -l10 -dnv -x -H --timestamping --limit-rate=100K --proxy=$PROXYSWITCH -U "$USERAGENT")

$WGET "${WGETOPT[@]}" "$URL"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使嵌套双引号在 bash 解释器中幸存下来? 的相关文章

随机推荐

  • 创建线程时有多少开销?

    我刚刚回顾了一些非常糟糕的代码 通过创建一个新线程来在串行端口上发送消息的代码 以便为发送的每条消息在新线程中打包和组装消息 是的 对于每条消息 都会创建一个 pthread 正确设置位 然后线程终止 我不知道为什么有人会做这样的事情 但它
  • Kotlin 协程选择调度程序

    我正在尝试找出在什么情况下使用哪个调度程序 我阅读了一些文档并提出了这个 默认 CPU工作 主要 主要 更新UI 无拘无束 IO 写文件 网络任务 这是正确的吗 那么无拘无束呢 您对调度程序类型的假设是正确的 无限制调度员 不局限于任何特定
  • 将视图模型绑定到淘汰赛中属性的存在

    我正在使用 Knockout js 填充一组 HTML5
  • Django:多个帐户,每个帐户下有多个用户,但特定于帐户的数据

    这里使用 Django 1 5 我创建了一个应用程序 当前拥有一大组数据 如果您愿意的话 可以用于一个 帐户 这意味着我的应用程序中所有模型中的所有数据都可供所有登录用户使用 现在 我希望能够让更多的人使用我的应用程序 但使用他们自己的数据
  • JavaScript、node.js 在继续之前等待 socket.on 响应

    我需要从客户端的服务器获取信息 所以在服务器端 当客户端第一次连接时我得到了这个 socket on adduser function username misc code where i set num player and whatno
  • CircleCi 2.0 在子目录中处理项目

    我正在尝试整合我的springbootCircleCi 的教程项目 我的项目位于 Github 存储库内的子目录中 我从 CircleCi 收到以下错误 目标需要一个项目来执行 但其中没有 POM 目录 home circleci reci
  • 如何检测DrawerLayout是否开始打开?

    所以我想在导航抽屉中隐藏一些选项卡starts开放 我的代码在打开后隐藏了它们 但这不是我想要的 mDrawerToggle new ActionBarDrawerToggle this mDrawerLayout R drawable i
  • JavaScript(ES6) 将对象设置为 null 时 WeakMap 垃圾回收

    我刚刚读到 WeakMaps 通过专门使用对象作为键来利用垃圾收集 并且将对象分配给 null 相当于删除它 let planet1 name Coruscant city Galactic City let planet2 name Ta
  • 在函数类型签名中替换 => 代替 ->

    我只是观察到如果不是 gt 我写的 gt 在函数的类型签名定义中 它不会导致编译时错误 示例代码 mysum Num a gt a gt a Notice gt after the list a mysum 0 mysum x xs x m
  • dijit.Tree搜索和刷新

    我似乎无法弄清楚如何使用 ItemFileWriteStore 和 TreeStoreModel 在 dijit Tree 中进行搜索 一切都是声明性的 我使用的是 Dojo 1 7 1 这是我到目前为止所拥有的
  • VSCode 扩展修复 Python 选项卡不一致问题 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 首先 我想知道是谁决定使用基于缩进的语言的无脑天才 以及为什么他不能简单地使用分号 令人沮丧的是 Pyt
  • 使用模型时 CakePHP AJAX Json 解析错误

    我正在使用 CakePHP 2 5 3 0 开发一个应用程序 然后我偶然发现了 AJAX 的一个问题 我使用从 jQuery 到 CakePHP 的 AJAX 请求来发送用户的登录名和密码 然后 CakePHP 应该返回经过验证的 JSON
  • 展开可选 IBOutlet 值时为 Nil

    我有一个fatal error unexpectedly found nil while unwrapping an Optional value for an IBOutlet 在我的自定义视图中 我已将我的插座与XIB文件 我已经仔细检
  • 在 Objective-C 中打乱 NSString 中的字母

    我写了这个函数 它会打乱 a 的内容NSString 它似乎可以工作 但时不时会崩溃 这可能是一种迂回的方式 但我将字符放入一个数组中 随机交换数组中的元素 然后将数组转回字符串 我不确定我正在做的事情是不安全的 这会导致它崩溃 我想这可能
  • 从视图控制器返回到表视图控制器时,表视图单元格“跳转”

    我有一个TableViewController 然后单击自定义单元格会将您带到相关的WebViewController 我遇到的问题是 当我点击 返回 时WebViewController中的表视图单元格TableViewControlle
  • pandoc 文档转换失败,错误 2

    当我在 R studio 中编写 HTML 时 我得到以下结果 C Users Susan ANACON 1 Scripts pandoc RTS K512m RTS Lesson3 student utf8 md to html from
  • Ruby:KML 库?

    我正在寻找一个 ruby 库来将位置数据导出到 KML 文件中 要导出的数据主要包含带有纬度和经度的简单点 但我也希望能够导出更复杂的多边形 I tried 龟豹 http rubygems org gems kamelopard 但觉得不
  • Python __dict__

    属性 dict 应该包含用户定义的属性 但是如果我们打印 dict 一个空的类 我还会得到 module dict weakref doc 哪些是由 Python 预先填充的 dict 相应于类对象类型的属性 Now base and cl
  • 主 NSWindow 阴影不会像子窗口那样改变

    我的应用程序中的主窗口是无边框的 self window setStyleMask NSBorderlessWindowMask 从该窗口 我还打开其他子窗口 当我在其他子窗口之间单击时 我看到当该子窗口被单击并成为焦点窗口时 这些子窗口的
  • 如何使嵌套双引号在 bash 解释器中幸存下来?

    鉴于下面的上下文 是否存在任何可以插入到 WGETOPT 定义中的神奇语法 以允许 吸收 USERAGENT 变量 并且仍然允许调用 wget 命令 如下所示syntax 1 我目前已经求助于使用 eval 但我对此并不满意 但也许这是我可