如何在CURL中使用base64命令?

时间:2017-08-07 18:50:29

标签: bash shell curl

如果我尝试对字体文件进行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

如何让它发挥作用?

2 个答案:

答案 0 :(得分:4)

您可以将curl输出管道传输到base64

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

答案 1 :(得分:2)

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

curl -s "$url" | base64

或者,一旦你在原始代码中捕获了curl导致的变量,请使用here-string:

base64 <<<"$content"