2015-04-23 57 views
0

我正在开发一个脚本,用于下载文件,将其转换为base64并将代码导出到变量。目前,我只能通过2个步骤完成此操作(这迫使我保存文件)。我如何直接下载和导出内容而不保存罚款......即一行?bash - 执行curl并将base64文件导出到变量

这是我在做什么...

#!/bin/bash -x 

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

谢谢!

回答

1

您可以使用process substitution

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

或者像伊坦赖斯纳在评论中指出,管道也能发挥作用:在

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

虽然进程替换结果传递到base64(根据平台,可能是FIFO的名称或命名文件描述符,如/dev/fd/63),流水线将其数据传递到base64通过stdin - 净效应是相同的在这里。

使用管道的优势在于符合POSIX标准,而流程替代符合bash特定功能。

+0

标准管道也可以在这里工作。 –