2

式が正規表現に一致する場合は終了コードを 0 に設定し、一致しない場合は非ゼロに設定する単純な (できれば 1 行の) コマンドライン式を探しています。理想的には、これは次のように機能するコマンド「match」になります。

$ match "foo.*" "foobar"; echo $?
0
$ match "foo.*" "f00bar"; echo $?
1

perl コマンド ライン プログラム ( perl -e <…&gt;) で問題ありません。コマンドが一致を stdout または stderr に出力するかどうかは問題ではありません。私が興味を持っているのは、終了コードとしてのバイナリ情報「一致/不一致」だけです。

4

2 に答える 2

1

bash では、=~二重括弧内で使用します。

$ [[ foobar =~ foo.* ]]; echo $?
0
$ [[ f00bar =~ foo.* ]]; echo $?
1

括弧を使用して、一致するグループを引き出すこともできます。

if [[ foobar =~ foo(.*) ]]; then
    # Captured groups stored in "regex match" array.
    echo "found ${BASH_REMATCH[1]}" 
fi
于 2012-08-06T13:45:01.537 に答える
0

これを試して :

echo test | >/dev/null sed "/teds/ {q0}; q1 " ; echo $?

この:

echo test | >/dev/null sed "/te/ {q0}; q1 " ; echo $? 

最初のものは 1 を返し、2 番目のものは 0 を返します。

于 2012-08-06T13:42:50.600 に答える