bash 如何处理嵌套引号? [复制]

2024-03-31

我需要使用如下语法运行命令:
runuser -l userNameHere -c '/path/to/command arg1 arg2'

不幸的是,我必须嵌套额外的'字符到命令本身中,我无法告诉 bash 正确解释这些字符。我想运行的命令实际上是:

runuser -l miner -c 'screen -S Mine -p 0 -X eval 'stuff "pwd"\015''

不幸的是,bash 似乎正在击中第二个'和呕吐。这是错误:
-bash: screen -S Mine -p 0 -X eval stuff: No such file or directory,所以显然它没有过去'.

我如何将其嵌套为一个命令?谢谢你!


该命令本身看不到外部引号。 shell 使用它们来避免分词,但不会让命令知道它们的存在。所以如果你有:

./command foo bar "baz biz"

该命令看到三个参数,foo, bar and baz biz空格完好无损,但没有引号。因此,如果您需要实际发送引号,您可以通过用另一种引号包装参数来实现:

./command "foo'bar"

该命令看到一个参数:foo'bar。但如果你需要发送both各种报价,你有一个更难解决的问题。你可以用倾斜牙签、交换报价或变量来解决它:

报价互换

尽管 shell 使用引号来避免分词,但如果将带引号的参数彼此相邻放置且不带空格,则命令会将其视为一个单词:

./command "foo""bar"

该命令看到一个参数:foobar。因此,如果您使用两种不同类型的引号:

./command 'foo"bar'"baz'quux"

该命令看到一个参数:foo"barbaz'quux.

倾斜牙签

倾斜牙签有两种。一种实际上只是引号交换,除非您不使用引号来包装…引号之一。

./command 'foo"barbaz'\'quux

该命令看到一个参数:foo"barbaz'quux。另一个是(帽子提示:chepner https://stackoverflow.com/a/25941527/418413)使用特殊的$'string'字扩展的形式,允许 ANSI C 字符串:

./command $'foo"barbaz\'quux'

该命令看到一个参数:foo"barbaz'quux.

变量

doublequote=\" singlequote=\'
./command "foo${doublequote}barbaz${singlequote}quux"

该命令看到一个参数:foo"barbaz'quux.

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

bash 如何处理嵌套引号? [复制] 的相关文章

  • 如何制作和应用SVN补丁?

    我想制作一个SVN类型的补丁文件httpd conf这样我就可以轻松地将其应用到其他主机上 If I do cd root diff Naur etc httpd conf httpd conf original etc httpd con
  • QFileDialog::getSaveFileName 和默认的 selectedFilter

    我有 getSaveFileName 和一些过滤器 我希望当用户打开 保存 对话框时选择其中之一 Qt 文档说明如下 可以通过将 selectedFilter 设置为所需的值来选择默认过滤器 我尝试以下变体 QString selFilte
  • 如何删除最后一次出现模式后的所有行?

    我想删除最后一次出现模式之后的所有行 除了模式本身 file txt honor apple redmi nokia apple samsung lg htc file txt 我想要什么 honor apple redmi nokia a
  • 何时使用 pthread 条件变量?

    线程问题 看来 只有在其他线程调用 pthread cond notify 之前调用 pthread cond wait 时 条件变量才起作用 如果在等待之前发生通知 那么等待将被卡住 我的问题是 什么时候应该使用条件变量 调度程序可以抢占
  • bluetoothctl 到 hcitool 等效命令

    在 Linux 中 我曾经使用 hidd connect mmac 来连接 BT 设备 但自 Bluez5 以来 这种情况已经消失了 我可以使用 bluetoothctl 手动建立连接 但我需要从我的应用程序使用这些命令 并且使用 blue
  • 从 PL/SQL 调用 shell 脚本,但 shell 以 grid 用户而非 oracle 身份执行

    我正在尝试使用 Runtime getRuntime exec 从 Oracle 数据库内部执行 shell 脚本 在 Red Hat 5 5 上运行的 Oracle 11 2 0 4 EE CREATE OR REPLACE proced
  • 在 Linux 上更快地分叉大型进程?

    在现代 Linux 上达到与 Linux 相同效果的最快 最好的方法是什么 fork execve combo 从一个大的过程 我的问题是进程分叉大约 500MByte 大 并且一个简单的基准测试只能从进程中实现约 50 个分叉 秒 比较最
  • awk 子串单个字符

    这是columns txt aaa bbb 3 ccc ddd 2 eee fff 1 3 3 g 3 hhh i jjj 3 kkk ll 3 mm nn oo 3 我可以找到第二列以 b 开头的行 awk if substr 2 1 1
  • 是否可以在Linux上将C转换为asm而不链接libc?

    测试平台为Linux 32位 但也欢迎 Windows 32 位上的某些解决方案 这是一个c代码片段 int a 0 printf d n a 如果我使用 gcc 生成汇编代码 gcc S test c 然后我会得到 movl 0 28 e
  • Bash 解析和 shell 扩展

    我对 bash 解析输入和执行扩展的方式感到困惑 对于输入来说 hello world 作为 bash 中的参数传递给显示其输入内容的脚本 我不太确定 Bash 如何解析它 Example var hello world displaywh
  • Linux 中的无缓冲 I/O

    我正在写入大量的数据 这些数据数周内都不会再次读取 由于我的程序运行 机器上的可用内存量 显示为 空闲 或 顶部 很快下降 我的内存量应用程序使用量不会增加 其他进程使用的内存量也不会增加 这让我相信内存正在被文件系统缓存消耗 因为我不打算
  • 跟踪 Linux 程序中活跃使用的内存

    我想跟踪各种程序在特定状态下接触了多少内存 例如 假设我有一个图形程序 最小化时 它可能会使用更少的内存 因为它不会重新绘制窗口 这需要读取图像和字体并执行大量库函数 这些对象仍然可以在内存中访问 但实际上并没有被使用 类似的工具top它们
  • 如何检测并找出程序是否陷入死锁?

    这是一道面试题 如何检测并确定程序是否陷入死锁 是否有一些工具可用于在 Linux Unix 系统上执行此操作 我的想法 如果程序没有任何进展并且其状态为运行 则为死锁 但是 其他原因也可能导致此问题 开源工具有valgrind halgr
  • 通过特定分隔符删除字符串

    我的文件中有几列 其中第二列有 分隔符 我想删除第二列中的第一个 第三个和第四个字符串 并将第二个字符串留在该列中 但我有正常的分隔符空间 所以我不知道 input 22 16050075 A G 16050075 A G 22 16050
  • 如何使用 bash 锁定文件

    我有一个任务从远程服务器同步目录 rsync av email protected cdn cgi l email protection srv data srv data 为了使其定期运行并避免脚本 reEnter 问题 我使用 rsyn
  • 从 csv 文件中删除特定列,保持输出上的相同结构[重复]

    这个问题在这里已经有答案了 我想删除第 3 列并在输出文件中保留相同的结构 输入文件 12 10 10 10 10 1 12 23 1 45 6 7 11 2 33 45 1 2 1 2 34 5 6 I tried awk F 3 fil
  • 如何在 Linux 中编写文本模式 GUI? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 当我编写脚本 程序时 我经常想弹出一个简单的文本 gui 来提示输入 我该怎么做 例如 来自 Shel
  • grep 两个分隔符之间的子字符串

    我有很多bash使用的脚本perl内的表达式grep为了提取两个分隔符之间的子字符串 例子 echo BeginMiddleEnd grep oP lt Begin End 问题是 当我将这些脚本移植到运行的平台时busybox 融合的 g
  • gdb查找行号的内存地址

    假设我已将 gdb 附加到一个进程 并且在其内存布局中有一个文件和行号 我想要其内存地址 如何获取文件x中第n行的内存地址 这是在 Linux x86 上 gdb info line test c 56 Line 56 of test c
  • 为什么 Linux perf 使用事件 l1d.replacement 来处理 x86 上的“L1 dcache misses”?

    在英特尔 x86 上 Linux用途 https stackoverflow com a 52172985 149138事件l1d replacements来实施其L1 dcache load misses event 该事件定义如下 计数

随机推荐

  • 并发不是并行吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Bootstrap 3.3.7 - 表单内联 - 输入和按钮同一行

    输入和按钮在同一行上正常工作 但输入尺寸很小 并且有空间更大 我希望它是 100 全尺寸 沿着输入和按钮下方的线 你看到了吗 我的 HTML 是
  • 如何自动缩放 WKWebView 的内容?

    要在 Swift 中自动缩放旧 WebView 中的网页 我所要做的就是 var w UIWebView w scalesPageToFit true 我找不到 WKWebView 的等效方法 并且网页在我的应用程序中显得太大 如何自动缩放
  • 如何从测试内部访问 py.test capsys?

    py test 文档说我应该将 capsys 参数添加到我的测试方法中 但就我而言 这似乎不可能 class testAll unittest TestCase def setUp self self cwd os path abspath
  • 命令 /usr/bin/codesign 失败,退出代码 1

    我有以下错误 命令 usr bin codesign 失败 退出代码 1 这是我已经尝试解决此问题所做的事情 将包标识符设置为 com server pgmname 将代码签名设置为 任何 Iphone OS 设备 将代码签名身份设置为我的
  • Tibco 错误:ClassNotFoundException:com.tibco.tibjms.naming.TibjmsInitialContextFactory

    我正面临这个问题 我使用以下配置 本地 tibco 测试了 tibco 它可以工作
  • 如何生成随机 Base36 ID

    有没有办法生成random Base36 标识符 http en wikipedia org wiki Base 36在 SQL Server 中是否有定义的字符数 我搜索并找到了许多将基数 36 转换为 int 的示例 反之亦然 但没有找
  • SPARQL - 查找具有最相似属性的对象

    假设有一个人的 RDF 数据库 每个人都有许多三元组来定义这个人的朋友 这么多 person x hasFriend otherPerson 如何找到拥有最相似朋友的人 我是 SPARQL 的新手 这似乎是一个非常复杂的查询 基本上 结果将
  • 如何创建批处理文件计时器来全天执行/调用另一个批处理

    如何创建一个批处理文件计时器来在一天中执行 调用另一个批处理 也许在给定的时间运行但不在周末运行 必须在系统上运行也可以 cmd在xp server 2003上运行 对于脚本的计时器部分 我强烈建议使用 echo echo Waiting
  • 在 IntelliJ IDEA 中从多个模块一起运行单元测试

    如何同时运行两个或多个 IDEA 模块中的所有测试 我正在使用许多模块 经常运行所有单元测试非常重要 当我选择多个文件夹来运行时 上下文菜单上不再有 运行 选项 最好的方法方法 3年后编辑 甚至还有更好的方法来实现这一目标 来自JetBra
  • 通过简单的产品 URL 预先选择可配置的产品选项

    如果请求的网址用于简单产品 如何显示带有预选选项的可配置产品 例如 简单的产品 1 has Color Red URL simple red html 简单的产品 2 has Color Green URL simple green htm
  • ASP.NET - 使用 UpdatePanel 内的 ListView 内的 LinkBut​​ton 触发异步回发

    好吧 我的第一篇文章 我希望标题有意义 我有一个更新面板 里面有一个文件上传控件 带有一个触发上传的按钮 在它下面 我有一个 ListView 它与上传的文件列表数据绑定在后面的文件中 更新面板有一个 PostBackTrigger 指向上
  • 在 Outlook 加载项中以 MIME 格式 (*.eml) 保存邮件

    我想编写一个小 Outlook 插件 C 它将选定的邮件 MailItem 以纯 MIME 格式 eml 保存到磁盘 MailItem SaveAs 方法仅允许以 msg 格式保存 还有其他 简单 方法可以将邮件保存为 eml 格式吗 我想
  • Rails 图像标签中的多个图像

    我想知道是否可以将数组传递给 Rails 图像标签 该数组将包含一系列 png 图像 我希望视图能够旋转显示这些图像 有谁知道这是怎么做到的吗 这是行不通的 div class img circle div 我似乎找不到说明 rails 指
  • 如何获取 nautilus 用于给定文件的缩略图?

    Nautilus 向我显示文件的缩略图 如果它是图像 它会向我显示预览 如果它是视频 它会显示视频中的帧 如果它是文档 它会向我显示应用程序图标 我如何访问该图像 我看到它们被缓存在 thumbnail 然而 它们都被赋予了独特的名字 缩略
  • 寻找最小组件集合的算法

    我正在寻找一种算法来解决以下问题 我有给定集合 a h 的多个子集 1 n 我想找到最小的子集集合 它允许我通过组合来构造所有给定的子集 该集合可以包含 1 n 中尚不存在的子集 a b c d e f g h 1 1 2 1 1 3 1
  • 状态栏在 ionic 3 中不起作用

    我是 IONIC 3 的新手 我只想在我的应用程序中实现状态栏 我尝试了以下方法 import App Nav Platform Events AlertController from ionic angular import Status
  • 在 iframe 加载之前运行脚本

    我正在使用嵌入在应用程序中的帮助系统 帮助的重要部分尝试具有相同的 document domain 值 但子 iframe 似乎在父 iframe 之前运行其 document domain 设置 这是一个问题 因为它会引发安全错误并停止
  • 无法注册 PS 图库

    我读了很多论坛并尝试了很多东西 但我就是无法添加PS图库 我使用公司代理 但我已设置我的个人资料以使用它 我正在尝试使用这些命令注册 PS 存储库 Net ServicePointManager SecurityProtocol Net S
  • bash 如何处理嵌套引号? [复制]

    这个问题在这里已经有答案了 我需要使用如下语法运行命令 runuser l userNameHere c path to command arg1 arg2 不幸的是 我必须嵌套额外的 字符到命令本身中 我无法告诉 bash 正确解释这些字