Bash配列の最後の行から文字を削除する

Bash配列の最後の行から文字を削除する

このトピックと同じことをしたいのですが、bashバージョンを使用しています。4.1.2

以下を使用して希望のチェーンを取得できます。

echo ${arr[@]:(-1)} | sed "s/,$///"

しかし、単に表示するのではなく、配列のインデックス値を変更したいと思います。

編集する

この文字除去を実行しようとしたときにループ内にあり、最後の要素に到達したことを指定します。したがって、配列の2番目の要素を変更したいと思います。

現在、次のような結果が得られます。

"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

ベストアンサー1

おすすめ記事