我正在尝试在 shell 脚本中将一些十六进制值编码为 base64。
nmurshed@ugster05:~$ echo -n "1906 1d8b fb01 3e78 5c21 85db 58a7 0bf9 a6bf 1e42 cb59 95cd 99be 66f7 8758 cf46 315f 1607 66f7 6793 e5b3 61f9 fa03 952d 9101 b129 7180 6f1d ca93 3494 55e0 0e2e" | xxd -r -p | base64
GQYdi/sBPnhcIYXbWKcL+aa/HkLLWZXNmb5m94dYz0YxXxYHZvdnk+WzYfn6A5UtkQGxKXGAbx3K
kzSUVeAOLg==
我在 76 个字符后自动换行,有办法避免吗?
我在网上发现,使用“-n”忽略新行...任何人都可以提出建议吗?
echo -n
这里实际上并不重要:它控制输出中是否有换行符echo
,但是否echo
发出换行符与是否xxd
or base64
发出换行符。
Because xxd
忽略输入中任何尾随换行符,echo
or echo -n
在这里的行为完全相同;是否有换行符echo
没有什么区别,因为换行符(如果存在)将被消耗xxd
当读取其输入时。相反,您最终关心的是输出base64
,这就是生成最终结果的原因。
假设您有 GNU 版本的 base64,请添加-w 0
禁用其输出中的换行。因此:
printf '%s' "1906 1d8b fb01 3e78 5c21 85db 58a7 0bf9 a6bf 1e42 cb59 95cd 99be 66f7 8758 cf46 315f 1607 66f7 6793 e5b3 61f9 fa03 952d 9101 b129 7180 6f1d ca93 3494 55e0 0e2e" \
| xxd -r -p \
| base64 -w 0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)