问题描述
原始字符串为 mcinventoryv4er9ll1!ss
,使用如下方式在命令行直接编码
echo 'mcinventoryv4er9ll1!ss' | base64
得到的结果是
bWNpbnZlbnRvcnl2NGVyOWxsMSFzcwo=
而正确的编码结果应该是
bWNpbnZlbnRvcnl2NGVyOWxsMSFzcw==
问题原因
经过尝试,可能是由于字符串末尾不可见的换行字符造成的问题。也是因为不同版本 echo
的实现造成的。
解决方法
直接在命令行编码的时候,使用
echo -n 'mcinventoryv4er9ll1!ss' | base64
即可得到正确的编码结果。
或者使用
printf 'mcinventoryv4er9ll1!ss' | base64
即可得到正确的编码结果。
另外,在这篇文章中,还提到了各种 shell
背后的引用会造成的其他问题。
因此建议使用行为更加稳定的 printf
来进行字符串的编码操作。