bashスクリプト - grepで$variableを使用する方法

bashスクリプト - grepで$variableを使用する方法

私はユーザーがドメイン名(example.com)を入力し、whoisコマンドの出力から電子メールアドレスを取得する簡単なbashスクリプトを書いています。

同じ入力ドメインを持つメールを探したい([Eメール保護])。

example.comdomain( ) を作成したが、 grep 関数でその変数を使用する$domain方法がわからない場合は、次のようになります。$domainどんな助けでも大変感謝します。ありがとうございます。

whois $ドメイン名| grep -m1 -EiEio '\b[A-Z0-9._%+-]+@[$ドメイン名]+\.[AZ]{2,4}\b'

答え1

変数は一重引用符内では拡張されません。この場合、二重引用符に切り替えるだけで十分です。また、取り外し[]囲みます$domain。角かっこを使用すると、ドメイン名の単一文字に一致する角括弧式を作成できます(実際のドメイン名自体ではありません)。

結局のところ、あなたは次のようなものを得るでしょう

whois "$domain" |
grep -m1 -Eio "\b[[:alnum:]._%+-]+@$domain\b"

\.[A-Z]{2,4}実際に使用する用途が見えないため、式の末尾を削除し、記号の前の英数字を一致させるために記号名を使用しました@

もう1つの改善は、すべての点を次に変えることです$domain\.

whois "$domain" |
grep -m1 -Eio "\b[[:alnum:]._%+-]+@${domain//./\\.}\b"

これには、非標準の引数置換を理解するbash別のシェルが必要です。${variable//pattern/word}

関連情報