如何从输出中删除换行符?

时间:2016-03-04 15:23:40

标签: shell

在shell中使用哈希密码(sha512)会破坏该行。 如何在一行中得到结果?

散列脚本:

password="abc123"
hashPassw="$(/bin/echo -n "${password}" | openssl dgst -binary -sha512 | openssl enc -base64)"
echo "${hashPassw}"

输出是(为什么要破坏线?):

xwtd2ev7b1HQnUEytxcMnSB1CnhS8AaA9lZY8DEOgQBW5nY8NMmgCw6UAHb1RJXB
afwjAszrMSA5JxxDRpUH3A==

应该是一行:

xwtd2ev7b1HQnUEytxcMnSB1CnhS8AaA9lZY8DEOgQBW5nY8NMmgCw6UAHb1RJXBafwjAszrMSA5JxxDRpUH3A==

2 个答案:

答案 0 :(得分:6)

来自enc的{​​{3}}。

  

为了抑制这种情况,除-base64外还可以使用-A标志。这将生成一个完全没有换行符的文件。

因此添加额外的-A标志就可以了。

password="abc123"
hashPassw="$(/bin/echo -n "${password}" | openssl dgst -binary -sha512 | openssl enc -A -base64)"
echo "${hashPassw}"

哪个输出

xwtd2ev7b1HQnUEytxcMnSB1CnhS8AaA9lZY8DEOgQBW5nY8NMmgCw6UAHb1RJXBafwjAszrMSA5JxxDRpUH3A==

答案 1 :(得分:3)

为什么你认为它应该是一行? Base64确实换行。

如果你坚持,你的问题可归结为" SHA512 SSL Base64无论什么"到"如何删除新行",有很多方法,

tr -d '\n'

只是其中之一。