bash:配列を文字列保存スペースに変換する

bash:配列を文字列保存スペースに変換する

空白を維持しながら配列を文字列に変換したいと思います。これが私が持っているものです:

INPUT=$1
readarray -t arr < <(grep -o . <<< "$INPUT")

echo "${arr[*]}"

${parameter//pat/string}IFSをに設定して使用しようとしましたが、IFS=' '明らかに間違っています。目的の出力を生成できません。

printf %q "$IFS"出力$' \t\n'

コマンドを使用してスクリプトを実行します。./rev_arr "I'm Hungry!"

出力:

予想出力:ここに画像の説明を入力してください。

ベストアンサー1

文字列を再構築するために文字列を個々の文字として配列に読み込む方法はよくわかりませんが、単一のスペースに設定すると、配列要素間IFSに単一のスペースが挿入されます"${arr[*]}"。代わりにIFS空の文字列に設定してください。

readarray -t arr < <( grep -o . <<<"$1" )
( IFS=''; printf '%s\n' "${arr[*]}" )

IFS私はスクリプトの残りの部分で値を変更しないようにサブシェルを使用してasとasを割り当てましたprintfIFS

おすすめ記事