質問: ### 前提・実現したいこと シェルスクリプトの部分文字列抽出について。 以下の例を達成するにはどのように出力、または変数を定義すればいいでしょうか。 <例> example=' "aaa","b,bb","ccc" ' 1aaaのみ変数に格納または出力 2b,bbのみ変数に格納または出力 2つともダブルクォーテーションを含まずに出力したいです。 前提として、 ・example定義する際に、ダブルクォーテーションを必ず記載されているものとします。 ・フィールド内にはカンマ(',')が含む場合もあるとします。 ### 発生している問題・エラーメッセージ b,bbが分割されてしまう。
回答: 中身にカンマを含まない前提で、 ``` example=' "aaa","bbb","ccc" ' IFS=, eval A=($example) echo "===${A[0]}===" echo "===${A[1]}===" echo "===${A[2]}===" ``` ダブルクォートの中にカンマが含まれると、空白になってしまいます。 また、`eval`を使うので、外部入力(ウェブから入力されたデータなど)を使う場合は、ノーチェックで実行すると脆弱性になります。`example='$(rm -rf ~)'`など。