如何将数组保存到文件和另一个文件数组加载?
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[@]};
不起作用:-(建议别人更好的方法?谢谢......
答案 0 :(得分:4)
如果变量的值不在多行中,那么使用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
。
答案 1 :(得分:0)
这对你有用吗?
a.sh将数组加载到变量ARR
。
a.sh的内容:
#/bin/sh
ARR=("aaa" "bbb" "ccc")
echo ${ARR[@]};
b.sh来源a.sh
并获取相同的变量ARR
b.sh的内容:
#/bin/sh
source a.sh
echo "I am in b.sh"
echo ${ARR[@]};
执行b.sh
./b.sh
I am in b.sh
aaa bbb ccc