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

관련 정보