Bash

bash 腳本 - 如何在 grep 中使用 $ 變數

  • March 30, 2020

我正在編寫一個簡單的 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。

引用自:https://unix.stackexchange.com/questions/576918