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