/bin/sh 无法识别十六进制转义序列
/bin/sh does not recognize hexadecimal escape sequences
为什么会发生在 /bin/bash:
$ printf '%b' '\x90'
?
$
但这发生在 /bin/sh:
$ printf '%b' '\x90'
\x90
$
/bin/bash
和 /bin/sh
有什么区别,为什么第一个解码十六进制而第二个不能?
因为 \xdd
形式的转义序列(其中每个 d
代表一个十六进制数字)是 GNU 扩展,并非随处可用。但是八进制被广泛支持(和standardized),所以你可以使用:
printf '%b' '20'
为什么会发生在 /bin/bash:
$ printf '%b' '\x90'
?
$
但这发生在 /bin/sh:
$ printf '%b' '\x90'
\x90
$
/bin/bash
和 /bin/sh
有什么区别,为什么第一个解码十六进制而第二个不能?
因为 \xdd
形式的转义序列(其中每个 d
代表一个十六进制数字)是 GNU 扩展,并非随处可用。但是八进制被广泛支持(和standardized),所以你可以使用:
printf '%b' '20'