私はddでいくつかのトリックをしようとしています。私はそれをddにパイプするために "header"と呼ばれる変数にいくつかの16進値を格納することは可能だと思いました。
変数を使用しない最初のステップは次のとおりです。
$ echo -ne "\x36\xc9\xda\x00\xb4" |dd of=hex
$ hd hex
00000000 36 c9 da 00 b4 |6....|
00000005
その後、私はこれを試しました:
$ header=$(echo -ne "\x36\xc9\xda\x00\xb4")
$ echo -n $header | hd
00000000 36 c9 da b4 |6...|
00000004
ご覧のとおり\x00
、$header
変数の値が失われました。誰かがこの動作の説明をしていますか?これは私を夢中にさせています。
header="$(echo -ne "\x36\xc9\xda\x00\xb4")"; echo -n "$header" | hd
が、同じ結果になるだけです。
header="\x36\xc9\xda\x00\xb4"; echo -n "$header" | hd
しますが、人間が読める形式で保存しているのと同じではありません。
bash: warning: command substitution: ignored null byte in input
。