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")