Bashからbase64でメッセージ(特殊文字を含む場合があります)をデコードします。ファイルに保存すると48バイトのデータが得られます。それでも変数に渡すと、41バイトの文字列になります。これは、Bashの特殊文字の処理方法(^ @)が原因であると考えています。一例として、 Bashのバイト配列(特殊文字を含む場合があります)
、meow_bash=`printf $variable | base64 --decode`
echo ${#meow_bash} # return 41
printf $variable | base64 --decode > meow
wc -c meow # return 48
今私は、データの機密性のためにファイルに配列を保存しない場合。私はまた、それを行うためにシェルスクリプトを使用する必要があります。それを成功させるためにbash/shを使用する方法はありますか?
^@はヌルバイトであり、bash変数として格納することも、任意のプログラムに引数として渡すこともできません。バイナリデータにはbashを使用しないでください。あなたはbase64を保存して、何かに書くときはいつでもそれを変換することができます。 –
IIRC私はbash(私はそれが古いバージョンだと思います)を削除文字(16進7f)で混乱させるのを見たことがあります。ロケールによっては、一部のツールでは対処できない場合があります。このため、バイナリデータを扱うシェルツールでは、base64(または16進数またはそれに類するもの)またはパイプを使用して取り込みます。 –