区切り文字の変更をシェルではなく次のechoコマンドに制限したいと思います。
$ myarr=(1 2 3)
$ echo $( IFS="|"; echo "${myarr[@]}" )
1 2 3
配列拡張で区切り文字を使用できないのはなぜですか?ありがとうございます。
ベストアンサー1
POSIXの観点からは、~について$*
:
フィールド分割を行わないコンテキストで拡張が発生した場合は、最初のフィールドを連結して単一のフィールドを形成する必要があり
IFS
ますIFS
。これは変数で、空の<space>
文字列に設定されている場合は区切り文字はありません。IFS
IFS
区切り文字を使用して単語を結合するには、以下を$*
使用する${array[*]}
必要がありますbash
。
$ set -- word1 word2 word3 "some other thing" word4
$ IFS='|'
$ echo "$*"
word1|word2|word3|some other thing|word4
または、次の配列を使用してくださいbash
。
$ arr=( word1 word2 word3 "some other thing" word4 )
$ IFS='|'
$ echo "${arr[*]}"
word1|word2|word3|some other thing|word4
あなたのコードで:
$ myarr=( 1 2 3 )
$ echo "$( IFS="|"; echo "${myarr[*]}" )"
1|2|3