我想做与此主题相同的事情,但使用 bash 版本4.1.2。
我可以使用以下命令获得我想要的链:
echo ${arr[@]:(-1)} | sed "s/,$///"
但是,我想修改数组中索引的值,而不仅仅是显示它。
编辑
我指定当我要执行此字符删除时,我处于循环中并且已到达最后一个元素。因此,我想修改数组的倒数第二个元素。
目前我得到以下结果:
"array" : {
"key1" : "value1",
"key2" : "value2",
"key3" : "value3",
"key4" : "value4",
"key5" : "value5",
}
我想删除最后一个逗号(,)来自 key5 索引。
(此时我处于下一行的级别})
编辑2
我的循环
while read line
do
if [[ $line == *"<templateIdentifier>"* ]];then
if [[ $FILENUMBER == $NUMBEROFFILES ]];then
continue
elif [[ $FILENUMBER < $NUMBEROFFILES ]];then
nameArray=$(echo "customData")
arr[$INDEXARR]='"'$nameArray'" : {'
((INDEXARR++))
continue
fi
elif [[ $line == *"</templateIdentifier>"* ]];then
if [[ $FILENUMBER < $NUMBEROFFILES ]];then
continue
elif [[ $FILENUMBER == $NUMBEROFFILES ]];then
echo ${arr[@]:(-1)} | sed "s/,$//"
arr[$INDEXARR]=' }'
continue
fi
elif [[ $line == *['<']* ]] && [[ $line != *[?'!'-]* ]] && [[ $line != *"<templateIdentifier>"* ]];then
name=$(echo $line | awk -F '<' {'print $2'} | awk -F '>' {'print $1'})
value=$(echo $line | awk -F '>' {'print $2'} | awk -F '</' {'print $1'})
arr[$INDEXARR]=$(echo -e ' \t ')'"'$name'" : "'$value'",'
((INDEXARR++))
else
continue
fi
done < $file