区切り文字を使用するときにreadarrayとして追加された新しい行を削除する方法は?

区切り文字を使用するときにreadarrayとして追加された新しい行を削除する方法は?
VAR=a,b,c,d
# VAR=$(echo $VAR|tr -d '\n')
echo "[$VAR]"
readarray -td, ARR<<< "$VAR"
declare -p ARR

結果:

[a,b,c,d]
declare -a ARR=([0]="a" [1]="b" [2]="c" [3]=$'d\n')

readarray最後の改行を追加しないかどうかはどうすればわかりますか\n?最新のシンボルとはどういう意味ですか$

ベストアンサー1

暗黙の末尾の改行文字は次のとおりです。いいえreadarray組み込みによって追加されましたが、here-string(<<<)によって追加されましたbash。参考bash here-stringが末尾の改行を追加するのはなぜですか?。改行なしで文字列を印刷し、プロセス代替技術を使用して文字列を読み取ることで、printfこの状況を排除できます。< <()

readarray -td, ARR < <(printf '%s' "$VAR")
declare -p ARR

これで正しく生成されます

declare -a ARR=([0]="a" [1]="b" [2]="c" [3]="d")

おすすめ記事