次の文字列が与えられた場合:
NAME="bla" TYPE="test" SIZE="10"
各ペアの値を別々のシェルスクリプト変数に入れたいと思います。たとえば、3つの変数があり、最初の変数にbla値をロードし、2番目の変数でテストし、3番目の変数に10をロードするとします。
name=bla
type=test
size=10
私が今まで試したこと:
echo \"NAME=\"bla\" TYPE=\"test\" SIZE=\"10\"" | awk '{print Var, $1}'
ただし、これは値だけでなく、完全なキーと値のペアも返します。 sedまたはawkを使用してこれを行うための良い方法はありますか?
ベストアンサー1
必ずしもお勧めしませんが、文字列に含まれる内容とワイルドカード文字などを含まない内容を完全に制御できる場合は、次のことができます。
$ cat tst.sh
#!/usr/bin/env bash
str='NAME="bla" TYPE="test" SIZE="10"'
declare $str
echo "NAME=$NAME"
echo "TYPE=$TYPE"
echo "SIZE=$SIZE"
$ ./tst.sh
NAME="bla"
TYPE="test"
SIZE="10"
$ cat tst.sh
#!/usr/bin/env bash
str='NAME="bla" TYPE="test" SIZE="10"'
declare ${str,,}
echo "name=$name"
echo "type=$type"
echo "size=$size"
$ ./tst.sh
name="bla"
type="test"
size="10"