如何将数组保存到文件并加载另一个文件数组?
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/