bash - Shell/Bash - 如何将数组保存到文件并加载另一个文件数组?

标签 bash

如何将数组保存到文件并加载另一个文件数组?

file1.sh
ARR=("aaa" "bbb" "ccc");
save to file2; # I do not know how :-(

file3.sh
load from file2; # I do not know how :-(
echo ${ARR[@]};

我试过...

file1.sh
declare -a ARR > /tmp/file2

file3.sh
source /tmp/file2
echo ${ARR[@]};

不起作用:-(建议别人更好的方法?谢谢...

最佳答案

如果你的变量的值不是在多行中,一个基本和简单的方法是使用 set:

# Save
set | grep ^ARR= > somefile.arrays
# Load
. somefile.arrays

当然,如果您对安全性敏感,还有其他解决方案,但这是最快的方法。

多行数组的更新:

# Save
printf "%s\x00" "${ARR[@]}" > somefile.arrays
# Load
ARR=() I=0
while read -r ARR[I++] -d $'\0'; do continue; done < somefile.arrays

如果您的值在任何地方都没有 $'\0' ,那将起作用。如果是这样,您可以使用除 $'\0' 之外的其他唯一分隔符。只需相应地更改 \x00$'\0

关于bash - Shell/Bash - 如何将数组保存到文件并加载另一个文件数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18860438/

相关文章:

regex - 使用 Bash 正则表达式匹配 (=~),其中正则表达式包含引号(“字符”)

linux - 如何将程序和文件的组合输出显示为表格并在 1 秒内观看

bash - nagios-cgi 密码屏幕绕过

bash - 当有多个条件时会失去其中之一

python - 如何从 Python 脚本返回一个值作为 Bash 变量?

用于计算多个文件平均值的 Linux Bash 脚本

linux - 排序并给出总数

bash - 我可以使用现有的 SSH 连接并在该隧道上执行 SCP 而无需重新验证吗?

linux - 启动 linux 终端的脚本,等待 1 秒,然后在其中启动命令

arrays - 将 bash 数组(字符串和特殊字符)写入文件