Bash 如何将base64命令与CURL一起使用?

Bash 如何将base64命令与CURL一起使用?,bash,shell,curl,Bash,Shell,Curl,如果我尝试对字体文件进行base64编码并将内容输出到文本文件,如下所示: base64 myfont.woff2 > output.txt 考虑到字体存储在本地,它的效果非常好。但是,如果我尝试从web url和base64输出中卷曲字体,则会导致一堆乱七八糟的信息保存到文件中,例如: #!/bin/bash declare -a arr=( "https://fonts.gstatic.com/s/opensans/v14/K88pR3goAWT7BTt32Z01mxJtnK

如果我尝试对字体文件进行base64编码并将内容输出到文本文件,如下所示:

base64 myfont.woff2 > output.txt
考虑到字体存储在本地,它的效果非常好。但是,如果我尝试从web url和base64输出中卷曲字体,则会导致一堆乱七八糟的信息保存到文件中,例如:

#!/bin/bash
declare -a arr=(
    "https://fonts.gstatic.com/s/opensans/v14/K88pR3goAWT7BTt32Z01mxJtnKITppOI_IvcXXDNrsc.woff2"
)

for i in "${arr[@]}"
do
    content="$(curl -s "$i")"
    echo base64 "$content" > output.txt
done

如何使其工作?

您可以通过管道将
curl
输出到
base64

for i in "${arr[@]}"; do
   curl -s "$i" | base64
done > output.txt

base64
命令希望将文本解码为输入,而不是参数。可以直接将管道卷曲到它:

curl -s "$url" | base64
或者,在原始代码中捕获变量中的curl结果后,使用here字符串:

base64 <<<"$content"
base64