我正在开发一个脚本,可以下载文件,将其转换为base64并将代码导出为变量。目前,我只能通过两个步骤完成此操作(这迫使我保存文件)。如何直接下载和导出内容而不保存罚款...即在一行中?
这就是我正在做的...
#!/bin/bash -x
curl -o top10.jpg "http://www.somesite.com/top10.jpg"
top10=$( base64 top10.jpg)
谢谢!
您可以使用进程替换:
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
的功能。