bash - 执行 curl 并将 base64 文件导出到变量
bash - execute curl and export base64 file to variable
我正在开发一个脚本,用于下载文件、将其转换为 base64 并将代码导出到变量。目前我只能分两步完成(这迫使我保存文件)。如何在不保存罚款的情况下直接下载和导出内容......即在一行中?
这就是我正在做的...
#!/bin/bash -x
curl -o top10.jpg "http://www.somesite.com/top10.jpg"
top10=$( base64 top10.jpg)
谢谢!
您可以使用 process substitution:
top10=$(base64 <(curl "http://www.somesite.com/top10.jpg"))
或者,正如 Etan Reisner 在评论中指出的那样,管道也可以工作:
top10=$(curl "http://www.somesite.com/top10.jpg" | base64)
虽然进程替换导致 filename 被传递给 base64
(FIFO 的名称或命名的文件描述符,例如 /dev/fd/63
,取决于平台),管道通过 stdin 将其数据传递给 base64
- 此处的净效果相同。
使用管道的优点是 POSIX 兼容,而进程替换是 bash
特定的功能。
我正在开发一个脚本,用于下载文件、将其转换为 base64 并将代码导出到变量。目前我只能分两步完成(这迫使我保存文件)。如何在不保存罚款的情况下直接下载和导出内容......即在一行中?
这就是我正在做的...
#!/bin/bash -x
curl -o top10.jpg "http://www.somesite.com/top10.jpg"
top10=$( base64 top10.jpg)
谢谢!
您可以使用 process substitution:
top10=$(base64 <(curl "http://www.somesite.com/top10.jpg"))
或者,正如 Etan Reisner 在评论中指出的那样,管道也可以工作:
top10=$(curl "http://www.somesite.com/top10.jpg" | base64)
虽然进程替换导致 filename 被传递给 base64
(FIFO 的名称或命名的文件描述符,例如 /dev/fd/63
,取决于平台),管道通过 stdin 将其数据传递给 base64
- 此处的净效果相同。
使用管道的优点是 POSIX 兼容,而进程替换是 bash
特定的功能。