我正在尝试在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"来忽略换行...有人能提供其他建议吗?
xxd
和base64
实现,这些实现由您的操作系统提供,而不是由Bash提供。 - Charles Duffyecho -n
实际上是未定义行为(根据 POSIX 标准的 echo);例如,如果运行了set -o posix; shopt -s xpg_echo
命令,则命令echo -n hello
将在其输出中发出-n hello
。如果您想要可靠和一致的行为,请考虑使用printf
,并参见 http://pubs.opengroup.org/onlinepubs/009604599/utilities/echo.html。 - Charles Duffy