有没有一个命令不仅可以回显它的参数,而且还可以在需要时转义它们(例如,如果参数包含空格或特殊字符)?
我需要在某种shell魔术中使用它,而不是在一个脚本中执行命令,而是回显命令。此输出通过管道传输到python脚本,该脚本最终以更有效的方式执行命令(它加载实际目标python脚本的main()方法,并使用给定的参数和一个附加参数执行该方法,计算出的数据在main()运行之间被缓存)。
取而代之的是,我当然可以将所有的shell魔术移植到python中,在那里我不需要管道任何东西。
发布于 2010-04-29 01:55:17
对于bash,printf内置有一个额外的格式说明符%q,它以一种友好的方式打印相应的参数:
除了标准的printf(1)格式之外,
%b还会导致printf在相应的参数中展开反斜杠转义序列(除了\c终止输出之外,\'、\"和\?中的反斜杠不会被删除,并且以\0开头的八进制转义最多可以包含四位数字),而%q会导致printf以一种可以重用为外壳输入的格式输出相应的参数。
所以你可以这样做:
printf %q "$VARIABLE"
printf %q "$(my_command)"获取变量的内容或命令输出的格式,该格式可以安全地再次作为输入传入(即空格转义)。例如:
$ printf "%q\n" "foo bar"
foo\ bar(我添加了一个换行符,以便在交互式shell中看起来更漂亮。)
https://stackoverflow.com/questions/2731883
复制相似问题