以下を使用してデータを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\n
inを使用していますbash
。さまざまなツールを使用してタスクを実行する方法はいくつかありますが、読み取りが引用符付き文字列をサポートしていないことに驚きました。
引用符で区切られたリストを配列に入れることに関する他の提案はありますか?
ベストアンサー1
私はあなたが必要とするものを達成するための良い方法を考えることはできませんが、入力ファイルにbashに有効な構文であるスペースで区切られたトークンが含まれていることを知っている場合は、次のように動作します。
declare -a arr="($(<myfile))"