キー値文字列を配列ペアに分割する方法は?

キー値文字列を配列ペアに分割する方法は?

?を使用してString以下をペアに分割する方法は?key-valuebash

SOURCE="'key1=val 1' 'key2=val 2'"

私の出力目標は次のとおりです

key1=val 1
key2=val 2
  • 変数として単一の文字列のみを入力できます。
  • 変数を次のように渡すことはできません。大量に
  • キーと値のペアをそのまま出力したいと思います。
  • キーと値のペアを区別する方法がわからないので、引用符を尊重したいと思います。
  • 私のキーにはスペースは含まれていませんが、値にはスペースが含まれています。

答え1

形式を自由に定義できるため、2つの定義の間SOURCEに常にスペースがあることを確認できます。この場合、先頭と先頭の目盛りを削除し、' 'すべての項目を改行で置き換えることができます。

echo "$SOURCE" | sed "s/^'//;s/'$//;s/' '/"'\
'/g

改行文字を引用するには、二重引用符から一重引用符に切り替える必要があります。

エスケープされたティックのバウンスも削除するには、次の手順を実行します。

echo "'key1=foo bar' 'key2=I\'m okay'" | sed "s/^'//;s/'$//;s/' '/"'\
'"/g;s/\\\\'/'/g"

これを失敗させる例は次のとおりです。SOURCE="'key1=foo\' ' 'key2=bar'"

関連情報