Bash / ZSH を使用して文字列内の ASCII 文字を正しく生成するにはどうすればよいですか?

Bash / ZSH を使用して文字列内の ASCII 文字を正しく生成するにはどうすればよいですか?

の後に( ) が10続き、さらに が続く文字列を生成しようとしています。NULL\010

しかし、動作しないようです (aの後に が続くecho "10\010"2 つの文字が生成されると思います。これらの値/文字を分離/エスケープする方法がわかりません。10\010

私も試してみましたecho "10""/0""10"が、結果は同じでした。

この出力を名前付きパイプにパイプしています。

答え1

POSIX 準拠のシェルでは以下を使用できます:

echo '10\000010'

8 進エスケープ シーケンスを終了するには、echoa の後に 3 つの 8 進数が続く必要があることに注意してください。\0

あなたの場合の問題は、非組み込み UNIX バリアントに必要なサポートbashを実装していないため、POSIX に準拠していないことです。XSI

bashただし、部分的にサポートされておりprintf、次のように使用できます。

printf '10\00010\n'

関連情報