有没有一个命令,不只是回想它的参数,而且还需要转义(例如,如果参数包含空格或特殊字符)?
我需要它在一些shell魔术,而不是在一个脚本中执行命令我回应命令.该输出被管道连接到一个Python脚本,最终以更有效的方式执行命令(它加载了实际目标python脚本的main()方法,并使用给定的参数执行它,并且通过计算数据的附加参数被缓存在main())的运行.
而不是我当然可以将所有的shell魔术移植到python,我不需要管道任何东西.
使用bash,printf内置函数有一个额外的格式说明符%q,以友好的方式打印相应的参数:
原文链接:https://www.f2er.com/bash/386689.htmlIn addition to the standard printf(1) formats,@H_403_11@%b causes printf to expand backslash escape sequences in the corresponding argument (except that @H_403_11@\c terminates output,backslashes in @H_403_11@\',@H_403_11@\",and @H_403_11@\? are not removed,and octal escapes beginning with @H_403_11@\0 may contain up to four digits),and @H_403_11@%q causes printf to output the corresponding argument in a format that can be reused as shell input.
所以你可以这样做:
printf %q "$VARIABLE" printf %q "$(my_command)"
以一种可以再次输入的格式(即空格转义)的方式获取变量或命令输出的内容.例如:
$printf "%q\n" "foo bar" foo\ bar
(我添加了一个换行符,所以它将是一个漂亮的交互式shell.)