从 bash 数组的最后一行删除一个字符

从 bash 数组的最后一行删除一个字符

我想做与此主题相同的事情,但使用 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

相关内容