如何使用 Bash / ZSH 正确生成字符串中的 ascii 字符?

如何使用 Bash / ZSH 正确生成字符串中的 ascii 字符?

我正在尝试生成一个字符串,10后跟NULL( \0) 后跟10.

但是echo "10\010"似乎不起作用(我猜它会生成两个字符 - a10后跟\010。我不知道如何分隔/转义这些值/字符?

我也尝试过,echo "10""/0""10"结果相同。

我正在将此输出传输到命名管道。

答案1

在 POSIX 兼容的 shell 中,您可以使用:

echo '10\000010'

请注意,echoa 后面需要三个八进制数来\0终止八进制转义序列。

您的情况的问题是bash在这种情况下不符合 POSIX,因为它没有实现XSI非嵌入式 UNIX 变体所需的支持。

bash但是部分支持printf,因此您可以使用:

printf '10\00010\n'

相关内容