首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >回显shell转义参数

回显shell转义参数
EN

Stack Overflow用户
提问于 2010-04-29 01:46:49
回答 1查看 6.2K关注 0票数 19

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

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

取而代之的是,我当然可以将所有的shell魔术移植到python中,在那里我不需要管道任何东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-29 01:55:17

对于bash,printf内置有一个额外的格式说明符%q,它以一种友好的方式打印相应的参数:

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

所以你可以这样做:

代码语言:javascript
运行
复制
printf %q "$VARIABLE"
printf %q "$(my_command)"

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

代码语言:javascript
运行
复制
$ printf "%q\n" "foo bar"
foo\ bar

(我添加了一个换行符,以便在交互式shell中看起来更漂亮。)

票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2731883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档