bash - 执行curl并将base64文件导出到变量

时间:2015-04-23 02:04:09

标签: bash curl base64

我正在开发一个下载文件的脚本,将其转换为base64并将代码导出到变量。目前我只能通过两个步骤完成此操作(这会强制我保存文件)。如何在不保存罚款的情况下直接下载和导出内容...即在一行中?

这就是我正在做的......

#!/bin/bash  -x 

curl -o top10.jpg "http://www.somesite.com/top10.jpg"
top10=$( base64 top10.jpg)

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用process substitution

top10=$(base64 <(curl "http://www.somesite.com/top10.jpg"))

或者,正如Etan Reisner在评论中指出的那样,管道也会起作用:

top10=$(curl "http://www.somesite.com/top10.jpg" | base64)

进程替换导致文件名传递给base64(FIFO的名称或命名文件描述符,例如/dev/fd/63,具体取决于平台) ,管道通过 stdin 将数据传递给base64 - 此处的净效果相同。

使用管道的优点是POSIX兼容,而流程替换是bash特定的功能。