ファイルから空白を含む引用配列要素を読みますか?

ファイルから空白を含む引用配列要素を読みますか?

以下を使用してデータをSTDIN配列に渡します。read

prompt$ cat myfile
a "bc" "d e" f
prompt$ read -a arr < myfile

しかし、read引用された文字列に注意を払わないようで、5つの要素を持つ配列を提供します。

prompt$ echo ${#arr[@]}
5
prompt$ echo ${arr[@]:0}
a "bc" "d e" f
prompt$ echo ${arr[2]}
"d
prompt$ echo ${arr[3]}
e"

私はデフォルト値IFS\t\ninを使用していますbash。さまざまなツールを使用してタスクを実行する方法はいくつかありますが、読み取りが引用符付き文字列をサポートしていないことに驚きました。

引用符で区切られたリストを配列に入れることに関する他の提案はありますか?

ベストアンサー1

私はあなたが必要とするものを達成するための良い方法を考えることはできませんが、入力ファイルにbashに有効な構文であるスペースで区切られたトークンが含まれていることを知っている場合は、次のように動作します。

declare -a arr="($(<myfile))"

おすすめ記事