私はユーザーがドメイン名(example.com)を入力し、whoisコマンドの出力から電子メールアドレスを取得する簡単なbashスクリプトを書いています。
同じ入力ドメインを持つメールを探したい([Eメール保護])。
example.com
domain( ) を作成したが、 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}