每隔count个字符插入换行符。默认值为0,这将生成一个完整的流。 因此,该标志在macOS中称为-b,并且默认为0,这意味着macOS中的base64与Linux中的base64 -w0具有相同的行为。您必须检测您运行的平台,以使用该命令的适当变体。Detect the OS from a Bash script;您要查找的macOS平台名称是“达尔文”。
$ man base64
...
OPTIONS
The following options are available:
-b count
--break=count Insert line breaks every count characters. Default is 0, which generates an unbroken stream.
...
让脚本同时工作的一种方法是检查错误:
MYCOMMAND=$(base64 -w0 commands.sh)
if [ $? -ne 0 ]; then
MYCOMMAND=$(base64 commands.sh)
fi
您也可以运行显式测试,例如
echo | base64 -w0 > /dev/null 2>&1
if [ $? -eq 0 ]; then
# GNU coreutils base64, '-w' supported
MYCOMMAND=$(base64 -w0 commands.sh)
else
# Openssl base64, no wrapping by default
MYCOMMAND=$(base64 commands.sh)
fi
3条答案
按热度按时间pgpifvop1#
是的,默认的macOS
base64
实现没有-w
标志。该标志有什么作用?COLS字符后的编码行换行(默认值为76)。使用0禁用换行。
下面是
base64
的macOS手册页:每隔count个字符插入换行符。默认值为0,这将生成一个完整的流。
因此,该标志在macOS中称为
-b
,并且默认为0
,这意味着macOS中的base64
与Linux中的base64 -w0
具有相同的行为。您必须检测您运行的平台,以使用该命令的适当变体。Detect the OS from a Bash script;您要查找的macOS平台名称是“达尔文”。weylhg0b2#
在Mac中,它是
-b
,默认值已经是0。让脚本同时工作的一种方法是检查错误:
您也可以运行显式测试,例如
yyyllmsg3#
一个在Linux和MacOS中都有效的解决方案是使用
tr
: