3

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

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[@]};

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

4

2 回答 2

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相应地更改。

于 2013-09-17T21:48:03.627 回答
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
于 2013-09-17T21:54:52.547 回答