使用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
現在,如果我不希望保存由於數據的敏感性質以文件的陣列。我也需要使用shell腳本來完成它。有沒有辦法讓我使用bash/sh來成功傳遞它?
^@是一個nul字節,不能存儲爲bash變量或作爲參數傳遞給任何程序。不要對bash數據使用bash。您可以存儲base64,並在您將其寫入任何內容時將其轉換。 –
IIRC我也看到bash(我認爲它是一箇舊版本)被刪除字符(十六進制7f)弄糊塗了。根據語言環境的不同,有些工具可能會拒絕處理因此,處理二進制數據的shell工具將採用base64(或十六進制或類似的東西)或通過管道。 –