条件文字列が reg.expression と一致します。

条件文字列が reg.expression と一致します。

したがって、私のスクリプトでは、パラメータの1つが有効なEメールアドレスであることを確認する必要があります。試しましたが失敗しました。

if $maddr="^.$*\(@\)\(*\)\(.\)\(??*\)"

then
...

これは、少なくとも1文字、後ろに@、その後に何もなく、その後にドットが来、その後に少なくとも2つの文字が来ることを意味します。

ベストアンサー1

文字列を正規表現に一致させるUnixツールは次のとおりですexpr

if expr "$maddr" : '..*@.*\...' > /dev/null; then...

(正規表現は暗黙的にexpr最初に固定されています。)

この場合、単純なシェルパターンマッチングで十分です。

case $maddr in
  ?*@*.??*) ...
esac

一部のシェル(たとえばzshksh93および)には、標準構文の上に拡張機能bashとして正規表現一致演算子が組み込まれていますが、構文はこれらのシェル間でわずかに異なります。sh

pattern='.@.*\...'
if [[ $maddr =~ $pattern ]]; then...

3つすべてで動作する必要があります。

(これらのパターンは有効なメールアドレスを保証しません。)

おすすめ記事