bash 命令以明确的形式打印字符串

Ras*_*los 5 bash string

我想知道是否存在bash以某种方式打印字符串的命令,以公开它包含的特殊字符。

例如,假设a=$'\a\0\b\e'; 是否存在\a\0\b\e从字面上打印的函数$a

到目前为止,我最接近的是使用以下l命令sed

echo "$a"  | sed -n 'l'
Run Code Online (Sandbox Code Playgroud)

它返回\a\000\b\033$,但表示法与内部的表示法不同,$''如果字符串包含换行符,则不起作用。

Hau*_*ing 6

var=$'a b \10 c'
printf %q "$var"
    $'a b \b c'
Run Code Online (Sandbox Code Playgroud)

这适用于bash. 我不知道这有多兼容。

  • 在`bash` 4.4 中,你也可以通过参数扩展得到相同的字符串:`${a@Q}`。 (2认同)