Bash将数组项编码为base64

时间:2014-08-25 18:57:01

标签: arrays bash base64

我从目录中的文件列表创建数组。 file1.jpg file2.jpg file3.jpg file4.jpg file5.jpg

我需要将数组中的每个项目(文件名)编码为base64。然后我需要制作逗号分隔的列表,以便在API请求中使用。

#!/bin/bash
array=($(ls /images/))
list=$(IFS=,; (echo "${array[@]}") | base64)
echo $list

输出:ZmlsZTEuanBnIGZpbGUyLmpwZyBmaWxlMy5qcGcgZmlsZTQuanBnIGZpbGU1LmpwZwo=

输出是一个空格分隔的文件名列表,所有文件名都编码为base64,而不是单独和逗号分隔。

通缉输出:

ZmlsZTEuanBnCg==,ZmlsZTIuanBnCg==,ZmlsZTMuanBnCg==,ZmlsZTQuanBnCg==,ZmlsZTUuanBnCg==

1 个答案:

答案 0 :(得分:1)

您也可以使用循环来执行此操作:

list=""
for i in /images/*; do
    list+=",$(basename "$i" | base64)"
done
list=${list:1}

循环遍历所有图像并构建以逗号分隔的列表。在第一个值之前有一个逗号,它在循环结束时被删除。