使用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(或十六进制或类似的东西)或通过管道。 –