抱歉,如果我针对一个讨论过几十次的主题提出问题。我正在尝试处理关联数组的一个元素并将其分配给一个数组。我知道在 bash 中关联数组是单维的,但是通过使用 bash 中引号的字符串扩展,我可以分配一个数组。最后我设法分两步完成,但我不知道为什么我需要额外的分配以及我是否可以避免它。
以下是脚本
FILE="/home/user/scripts/snapstbylist"
declare -A stby
while read line; do
DS=${line%@*}
SNAPSHOT=${line#*@}
stby+=(["$DS"]=" $SNAPSHOT")
done < <(awk '/stby/{print $1}' $FILE)
for ds in "${!stby[@]}"; do
# echo ":-) $ds"
DATASET2=( "${stby["$ds"]}" )
DATASET=($DATASET2)
LAST="${DATASET[-1]}"
echo "The dataset list $ds contains ${#DATASET[@]} elements, i.e. ${DATASET[@]}"
done
DATASET2 是一个包含单词的字符串,最终 DATASET 是我想要的数组。有没有办法避免分配 DATASET=($DATASET2) 并将我想要的数组作为 DATASET2?
Extract of the file /home/user/scripts/snapstbylist
zserver02/home/GROUP/biastby@d20140123 227K - 471M -
zserver02/home/GROUP/biastby@d20140128 233K - 471M -
zserver02/home/GROUP/biastby@d20140129 206K - 471M -
zserver02/home/GROUP/biastby@d20140130 240K - 471M -
zserver02/home/GROUP/biastby@d20140131 438K - 471M -
zserver02/home/GROUP/biastby@d20140201 244K - 471M -
zserver02/home/GROUP/biastby@d20140202 220K - 471M -
zserver02/home/GROUP/biastby@d20140204 0 - 832M -
zserver02/home/GROUP/bloombergstby@d20131119 0 - 148K -
zserver02/home/GROUP/bloombergstby@initback02 0 - 148K -
zserver02/home/GROUP/caestby@d20131228 0 - 626M -
zserver02/home/GROUP/gtistby@d20140125 0 - 131K -
zserver02/home/GROUP/juastby@d20140107 0 - 130K -
zserver02/home/GROUP/kepstby@d20140118 0 - 138K -
zserver02/home/GROUP/koastby@d20131227 93K - 145K -
我可以这样总结,为什么
"${stby["$ds"]}"
在
数据集2 = ( “${stby[”$ds“]}” )
不是扩大了吗?
提前致谢,
亚历克斯