?を使用してString
以下をペアに分割する方法は?key-value
bash
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'"