次のbash式をコピーするには:
if [[ "$foo" =~ (bar|spam) ]]; then
echo "True"
fi
アルプスで/bin/sh
?
そのまま入力するとエラーになります。
/bin/sh: syntax error: unexpected "(" (expecting "then")
ベストアンサー1
foo
シェル変数にサブストリングが含まれているかbar
どうかをテストするには、spam
標準case ... esac
ステートメントを使用してこれを実行できます。
case $foo in
*bar*|*spam*) echo True
esac
「万能」ケースが必要な場合は、最後にパターンがある別のケースを使用してください*
。
case $foo in
*bar*|*spam*) echo True ;;
*) echo False
esac
使用されるパターンは、case ... esac
正規表現ではなくシェルワイルドカードパターンです。したがって、パターンは文字列全体と一致する必要があるため、*
各部分文字列の周りを使用して両側に追加の文字を許可します。照会各ケースには、区切りパターンリストとリストのパターンが一致したときに実行される照会リストがcase ... esac
使用されます。|
ケースの説明は次に終了する;;
(最後のケースでは省略可能)。シェルは一致するパターンを使用して最初のケースのコードを実行します。
上記の2番目のコードブロックは、次のように書くこともできます。
case $foo in (*bar*|*spam*) echo True ;; (*) echo False; esac
パターンの開き括弧は常にオプションです。