echo shell 转义参数 [重复]

2024-04-07

是否有一个命令不仅会回显其参数,而且还会在需要时转义它们(例如,如果参数包含空格或特殊字符)?

我需要在一些 shell 魔法中使用它,而不是在一个脚本中执行命令,而是回显该命令。此输出通过管道传输到一个 python 脚本,该脚本最终以更有效的方式执行命令(它加载实际目标 python 脚本的 main() 方法,并使用给定的参数和附加参数执行它,计算数据缓存在main() 的运行)。

相反,我当然可以将所有 shell 魔法移植到 python,这样我就不需要通过管道传输任何东西。


使用 bash,printf内置有一个附加的格式说明符%q,它以友好的方式打印相应的参数:

除了标准 printf(1) 格式之外,%b导致 printf 展开相应参数中的反斜杠转义序列(除了\c终止输出,反斜杠\', \", and \?不会被删除,并且以以下开头的八进制转义符\0最多可包含四位数字),并且%q导致 printf 以可重复用作 shell 输入的格式输出相应的参数。

所以你可以这样做:

printf %q "$VARIABLE"
printf %q "$(my_command)"

以可以安全地再次作为输入传递的格式获取变量的内容或命令的输出(即转义空格)。例如:

$ printf "%q\n" "foo bar"
foo\ bar

(我添加了一个换行符,这样它在交互式 shell 中会很漂亮。)

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

echo shell 转义参数 [重复] 的相关文章

  • Bash 脚本问题

    我可以很好地运行这个命令 并得到我想要的输出 ifconfig eth0 grep HWaddr awk print 5 但是 当我将命令设置为变量并打印该变量时 出现错误 CASS INTERNAL ifconfig eth0 grep
  • 使用 ls 和 grep 列出具有特定扩展名的文件

    我只想从当前目录获取文件 并且只输出 mp4 mp3 exe 文件 没有其他内容 所以我想我可以这样做 ls grep mp4 grep mp3 grep exe 但不会 因为第一个 grep 将仅输出 mp4 因此其他 2 个 grep
  • Bash:在新终端中执行带有参数的命令[重复]

    这个问题在这里已经有答案了 所以我想在 bash 中打开一个新终端并执行带参数的命令 只要我只采取类似的东西ls作为命令它工作正常 但是当我采取类似的东西时route n 所以带参数的命令不起作用 代码 gnome terminal win
  • 带参数的多重继承

    我已经阅读了很多有关继承的内容 但我似乎无法理解为什么这会给我一个错误 使用Python 2 7 x class A object def init self value super A self init print First s va
  • 如何为函数启用 bash 自动完成功能?

    我已经阅读了关于 bash 自动完成的教程bash补全简介 http www debian administration org article 316 An introduction to bash completion part 1我正
  • 如何设置PS1使git和conda都可以在bash中显示?

    我的 bashrc show a short way shortwd num dirs 3 pwd symbol newPWD PWD HOME if echo n newPWD awk F print NF gt num dirs the
  • bash fork 炸弹的另一个版本是如何工作的?

    我大致了解如何这个通用版本 https stackoverflow com questions 991142 how does this bash fork bomb work bash fork 炸弹的工作原理 然而 我见过另一个版本 特
  • ${ARGUMENT+x} 在 Bash 中意味着什么? [复制]

    这个问题在这里已经有答案了 我有一个使用以下语法的 bash 脚本 if z ARGUMENT x then 参数名称后面的 x 语法是什么意思 这意味着如果 ARGUMENT设置后 它将被字符串替换x 让我们在 shell 中尝试一下 e
  • Bash:更新文件中的变量

    我知道这是一个简单的答案 在找到答案之前我可能可以继续在谷歌上进行挖掘 但我的日程很紧 我希望能得到一个轻松的答复 我需要在安装时更新 ifcfg eth0 中的变量 换句话说 这就是需要发生的事情 以下变量需要更改 ONBOOT no B
  • 如何通过管道将输入和输出传送到交互式 shell?

    我正在尝试构建一个应用程序 使用户能够与命令行交互式 shell 例如 IRB 或 Python 进行交互 这意味着我需要将用户输入通过管道传输到 shell 并将 shell 的输出返回给用户 我希望这会像管道 STDIN STDOUT
  • 如何在c#中使用net user

    我正在尝试将 net user 与 c 一起使用 System Diagnostics ProcessStartInfo proccessStartInfo new System Diagnostics ProcessStartInfo n
  • 引用附加变量?

    我怎样才能在 bash 脚本中做到这一点 bin sh func export NAME SUFFIX result of some command NAME my name func This variable will become m
  • sed:更改 .yml 文件中环境属性的值

    我有一个 yml 文件 用于配置应用程序的环境属性 如下所示 env1 prop1 value1 prop2 value2 propn valuen env2 prop1 value1 prop2 value2 prop3 value3 p
  • 使用 ffmpeg 从 unix 命令批量将 wav 文件转换为 16 位

    我有一个由许多子文件夹组成的文件夹 每个子文件夹都有其他子文件夹 其中包含 wav 文件 我想像这样转换所有文件 ffmpeg i BmBmGG BmBmBmBm wav acodec pcm s16le ar 44100 BmBmGG B
  • 将尾部输出重定向到程序中

    我想使用 tail 作为标准输入向程序发送文本文件中的最新行 首先 我向程序回显一些每次都相同的输入 然后从输入文件发送尾部输入 该输入文件应首先通过 sed 处理 以下是我期望工作的命令行 但是当程序运行时 它只接收回显输入 而不接收尾部
  • 使用 xclip 将剪贴板内容粘贴到 bash 中的变量中

    我知道这个命令会将剪贴板内容粘贴到文件中 xclip out selection clipboard gt gt file txt 如果我想将剪贴板内容粘贴到变量 如字符串 中 我该怎么办 要将命令的输出分配给变量 可以使用命令替换 myv
  • 为所有图像添加前缀(递归)

    我有一个包含 5000 多张图像的文件夹 全部带有 JPG 扩展名 我想要做的就是递归地向所有图像添加 thumb 前缀 我发现了一个类似的问题 重命名文件和目录 添加前缀 https stackoverflow com questions
  • 使用 sh shell 比较字符串

    我正在使用 SH shell 我试图将字符串与变量的值进行比较 但是if条件始终执行为真 为什么 这是一些代码 Sourcesystem ABC if Sourcesystem eq XYZ then echo Sourcesystem M
  • 验证 BASH 脚本时出现问题 [已关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我在尝试验证 bash 脚本时出现代码 lint 错误 bin bash if eq 0 then printf No argum
  • 将 erlang shell 作为守护进程/服务运行

    显然 我有一个在 Erlang shell 中运行的 Erlang 程序 我想监视它 这就是我要的 当机器启动时 Erlang shell 应该随之启动 并且在 shell 中运行的程序也应该随之启动 如果 Erlang shell 由于某

随机推荐

  • WPF - 为什么 ContextMenu 项目适用于 ListBox 而不是 ItemsControl?

    列表中的项目有上下文菜单 上下文菜单项绑定到路由命令 如果列表控件是一个 则上下文菜单项可以正常工作ListBox 但一旦我将其降级为ItemsControl它不再起作用了 具体来说 菜单项始终呈灰色 这CanExecute回调在我的Com
  • N Boost Interval_set 的组合

    我的服务在 4 个不同的地点出现中断 我将每个位置的中断建模为 Boost ICL Interval set 我想知道何时至少有 N 个地点发生主动中断 因此 以下这个答案 https stackoverflow com a 9430993
  • Typescript 编译错误:类型“Node”上不存在属性“classList”

    Windows 7 x64 使用 typescript 1 5 beta 使用 gulp typescript 2 7 7 进行编译 出现错误 由于语句 类型 Node 上不存在属性 classList document getElemen
  • 如何修复“OSError:[WinError 193] %1 不是有效的 Win32 应用程序”

    我正在努力与熊猫相处 我正在使用 Thonny 作为 IDLE 来学习 Python 我在 cmd 中使用 pip 命令安装了 pandas 不知何故 我无法在 IDLE 中导入 pandas 方法 因此我通过设置将其添加为包 问题是 当我
  • 自动在所有方法上设置断点

    有没有一种方法可以自动在 eclipse idea 中对给定类中的所有方法设置断点 在大纲视图 Eclipse 中 您可以选择所有方法 右键单击并选择 切换方法断点
  • C 中结构体和指针的 malloc

    假设我想定义一个表示向量长度及其值的结构 如下所示 struct Vector double x int n 现在 假设我想定义一个向量 y 并为其分配内存 struct Vector y struct Vector malloc size
  • 使用 lapply 对数据框列表应用函数并将输出保存到具有不同名称的文件

    我有一个数据框列表 并为列表中的每个元素 例如每个数据框 指定了名称 e g df1 lt data frame x c 1 5 y c 11 15 df2 lt data frame x c 1 5 y c 11 15 mylist lt
  • 如何编写给定代码的列表理解?

    我对 python 相当陌生 l for i in range x 1 for j in range y 1 for k in range z 1 if i k j n l append i j k 我尝试过 l i for i in ra
  • 我可以在 Django 中为每个用户创建子域吗

    我希望用户创建自己的帐户 并且用户应该拥有自己的帐户 例如 user foo com 并不同指向不同的模板文件夹 在 Django 中可以吗 我对 Django 很陌生 安德烈提供的答案并不完全正确 您确实需要一个通配符域名 大多数体面的提
  • PHP/MySQLi 中的多个 SQL 对象

    一段时间以来 我一直在 php 中使用多个 SQL 连接来避免 您现在无法运行此命令 命令不同步 错误 我似乎无法弄清楚何时只能使用一个连接以及何时需要多个连接 以下代码是我如何从彼此相关的不同表中检索内容的方法 The sqls 是连接到
  • Laravel、Faker - 增加生成的日期时间

    我在 Seeder 中使用 Faker 包来生成训练活动的假数据 每个活动都有starts at and ends at字段 我想填充ends at场与DateTime那是在生成的之后starts at 最好相差 1 到 8 小时 或者甚至
  • 从 Expo 应用程序调用本地托管服务器

    我正在创建一个反应本机应用程序 我创建的组件之一包含一个属性 该属性通过来自 http 请求的数据填充 现在 我通过笔记本电脑托管服务器 但我正在使用 Expo 应用程序在手机上测试该应用程序 由于这是两个独立的设备 http 本地主机 3
  • Unicode 和非 Unicode 之间的 SSIS 数据转换错误

    当我运行 ssis 包时 我收到此错误 无法在 unicode 和非 unicode 字符串数据类型之间转换 我的源是 Oracle 当我检查输出列数据类型时 它们都是 Unicode 字符串 DT WSTR 我的目标是 SQL输入列的数据
  • 为 iOS 项目编译 libtiff 以包含 64 位架构

    我有一个 iOS 应用程序更新到最新的 SDK8 3 并且我正在使用最新版本的 Xcode 我的应用程序使用 libtiff 将图像 PNG 格式 转换为 TIFF 格式 我遇到的问题是我需要向 App Store 提交新的修订版 并且需要
  • 在同一光标中访问订购的图像和视频

    我正在使用android content CursorLoader类创建两个Cursor对象访问存储在我的应用程序设备的用户上的媒体 我想为用户提供存储图像和视频的网格视图 以保留 Android Gallery 应用程序的顺序 目前我正在
  • 使用执行 SQL 任务的参数映射

    我正在尝试创建一个临时表并将数据插入到 foreach 循环容器内的执行 SQL 任务内的临时表中 这是sql任务 IF OBJECT ID TEMPDB DBO TEMP IS NOT NULL DROP TABLE TEMP GO CR
  • 将“for”循环的输出写入 PYTHON 中的 excel

    我有以下代码 my list US IT ES NL for i in my list A sum products by country world level i df pd DataFrame value A Descending d
  • UDP sendto 上的 ECONNREFUSED 错误

    我在使用正在写入的应用程序时遇到一些无法解释的行为 使用 sendto 向多个端口发送 UDP 数据 所有端口均使用套接字 PF INET SOCK DGRAM 0 为了一组客户端读取进程的利益 这些 sendto 偶尔会不可预测地触发经济
  • 使用 R 中的 Quantmod 提取日内分钟柱数据

    我希望这是一个相当简单的答案 当我看到解决方案有多么简单时 我会感到尴尬 但我在使用每分钟提取盘中股票数据时遇到了很多麻烦getSymbols Quantmod 包下的函数 我尝试使用提取数据getSymbols F 并最终得到以下输出 g
  • echo shell 转义参数 [重复]

    这个问题在这里已经有答案了 是否有一个命令不仅会回显其参数 而且还会在需要时转义它们 例如 如果参数包含空格或特殊字符 我需要在一些 shell 魔法中使用它 而不是在一个脚本中执行命令 而是回显该命令 此输出通过管道传输到一个 pytho