Bash
bash 腳本 - 如何在 grep 中使用 $ 變數
我正在編寫一個簡單的 bash 腳本,其中使用者輸入域名(example.com)並從 whois 命令輸出中獲取電子郵件地址。
我只想用相同的輸入域(xxx@example.com)grep 電子郵件。
如果我編寫域 (
example.com
) 但不適用於$domain
. 我不知道如何$domain
在 grep 函式中使用該變數。非常感謝任何幫助,謝謝。whois $ region | grep -m1 -EiEio'\ b [A-Z0-9 ._% +-] + @ [ **$ domain** ] + \. [AZ] {2,4} \ b'
變數不在單引號內展開。在這種情況下,簡單地切換到雙引號可能就足夠了。另外,刪除
[
and]
around$domain
。使用方括號,您將創建一個括號表達式,該表達式將匹配域名中的任何單個字元(但不匹配實際的域名本身)。最後,你會得到類似的東西
whois "$domain" | grep -m1 -Eio "\b[[:alnum:]._%+-]+@$domain\b"
我刪除了
\.[A-Z]{2,4}
表達式末尾的位,因為我實際上沒有看到它有任何用途,並且我使用符號名稱來匹配符號前的字母數字@
。一個額外的增強是在模式中使用它之前替換任何
$domain
點\.
:whois "$domain" | grep -m1 -Eio "\b[[:alnum:]._%+-]+@${domain//./\\.}\b"
這需要
bash
或任何其他理解非標準${variable//pattern/word}
參數替換的 shell。