文字列から単語の次の単語を取得する必要があります。スクリプトを作成しようとしても機能しません。これを達成するための他の代替案を提案してください。
スクリプト:
#!/bin/bash
opts="OPTS=\"-name user -age 20 -where Asia -eats Brains\""
echo $opts
ok="0"
for word in $opts; do
if [ "$word" = "-where" ] ; then
if [ "$ok" = "1" ] ; then
echo $word
break
fi
ok="1"
fi
done
「-where」の後に単語を取得したい。しかし、上記のスクリプトは機能しません。私は何を見逃しているのか分かりません。ありがとうございます。
ベストアンサー1
私はgrep
この役職に採用することをお勧めします:
$ OPTS="\"-name user -age 20 -where Asia -eats Brains\""
$ grep -Po -- '-where \K\w*' <<< "$OPTS"
Asia
説明する:
-P
: Perl 互換正規表現-o
:一致する部分のみを表示\K
:その時点より前のすべての項目を破棄します。\w*
:一致単語コンポーネント(の同義語[_[:alnum:]]
)
"
一致する文字リストに追加するには:
$ grep -Po -- '-eats \K[_\"[:alnum:]]*' <<< $OPTS
Brains"