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 如何处理嵌套引号? [复制] 的相关文章

  • 无需超级用户即可在 Linux 中打开 RAW 套接字

    我必须编写一个在 Linux 上运行的 ping 函数 语言是 C 所以 C 也可以 在网上搜索并查看源代码ping命令 事实证明我应该创建一个原始套接字 icmp sock socket AF INET SOCK RAW IPPROTO
  • C 语言的符号表

    我目前正在开发一种执行模式匹配的静态分析工具 我在用Flex https github com westes flex生成词法分析器 我编写了代码来管理符号表 我不太有经验C 所以我决定将符号表实现为线性链表 include
  • Python DNS服务器IP地址查询

    我正在尝试使用 python 获取 DNS 服务器 IP 地址 要在 Windows 命令提示符下执行此操作 我将使用 ipconfig 全部 如下所示 我想使用 python 脚本做同样的事情 有什么方法可以提取这些值吗 我成功提取了设备
  • 使用脚本从网站中提取电子邮件地址

    给定一个网站 我想知道以编程方式和 或使用脚本的最佳程序是什么 以纯文本形式提取每个页面上存在的所有电子邮件地址 电子邮件受保护 cdn cgi l email protection从该链接和下面的所有站点 递归或直到某个固定深度 使用 s
  • CMake 链接 glfw3 lib 错误

    我正在使用 CLion 并且正在使用 glfw3 库编写一个程序 http www glfw org docs latest http www glfw org docs latest 我安装并正确执行了库中的所有操作 我有 a 和 h 文
  • 使用 shell 脚本将行附加到 /etc/hosts 文件

    我有一个新的 Ubuntu 12 04 VPS 我正在尝试编写一个安装脚本来完成整个 LAMP 安装 我遇到问题的地方是在 etc hosts文件 我当前的主机文件如下所示 127 0 0 1 localhost Venus The fol
  • “/bin/bash -l”无效选项

    好吧 我正在尝试在我们的超级计算机上运行隐藏为一项作业的串行 MPI 作业 主要提交脚本基本上如下所示 bin bash l PBS l nodes 4 ppn 8 walltime 24 00 00 cat PBS NODEFILE un
  • 在 Mono 上运行 .Net MVC5 应用程序

    我正在 Windows 上的 Visual Studio 2013 中开发 Net 4 5 1 MVC5 应用程序 现在我想知道 是否可以在Linux Ubuntu 12 04 上运行这个应用程序 可以使用OWIN吗 Owin 可以自托管运
  • 使用包管理器时如何管理 Perl 模块?

    A 最近的问题 https stackoverflow com questions 397817 unable to find perl modules in intrepid ibex ubuntu这让我开始思考 在我尝试过的大多数 Li
  • Intel 上的 gcc 中的 _mm_pause 用法

    我参考过这个网页 https software intel com en us articles benefitting power and performance sleep loops https software intel com
  • Bash:单行命令以与 grep 命令相反的状态退出?

    如何减少以下 bash 脚本 grep P STATUS Perfect recess txt exit 1 exit 0 看起来我应该能够用一个命令来完成它 但我这里总共有 3 个命令 我的程序应该 阅读课间休息 txt 如果它包含 ST
  • 如何扩展路径中的波形符(~)[重复]

    这个问题在这里已经有答案了 我有一个 shell 脚本 可以从用户那里获取目录路径 但我需要检查目录是否为空 如果用户将他的主路径与 而不是绝对路径 所以我无法检查它ls echo Specify your project root dir
  • 如何使用 mediawiki 的 api、curl 和 bash 登录?

    我对流程的理解 来自 mediawikis 登录手册https www mediawiki org wiki API 登录 https www mediawiki org wiki API Login 使用 MediaWiki 的 Web
  • Linux/POSIX:为什么 fork() 不分叉*所有*线程

    众所周知 POSIX下创建新进程的默认方式是使用fork 在 Linux 下 这在内部映射到clone 我想知道的是 众所周知 当一个人打电话时fork 子进程是用单个线程创建的 调用的线程fork cf https linux die n
  • Bash:读入多个局部范围变量

    根据这个答案 https stackoverflow com a 1952480 582917 https stackoverflow com a 1952480 582917 我可以读入并因此分配多个变量 但是我希望这些变量是 bash
  • 如何在 Mac OSX Mavericks 中正确运行字符串工具?

    如何在 Mac OSX Mavericks 中正确运行字符串工具 我尝试按照我在网上找到的示例来运行它 strings a UserParser class 但我收到此错误 错误 Applications Xcode app Content
  • 如何让 Node.js 作为后台进程运行并且永不死掉?

    我通过 putty SSH 连接到 linux 服务器 我尝试将其作为后台进程运行 如下所示 node server js 然而 2 5 小时后 终端变得不活动 进程终止 即使终端断开连接 我是否也可以使进程保持活动状态 Edit 1 事实
  • 如何检查主机是否在您的known_host ssh中

    我的脚本中使用以下命令 将主机添加到 ssh 中的已知主机 VAR2 expect c spawn ssh o StrictHostKeyChecking no REMOTE HOST USER REMOTE HOST IP expect
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • 干净构建 Java 命令行

    我正在使用命令行编译使用 eclipse 编写的项目 如下所示 javac file java 然后运行 java file args here 我将如何运行干净的构建或编译 每当我重新编译时 除非删除所有内容 否则更改不会受到影响 cla

随机推荐

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

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 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 正确解释这些字