저는 사용자가 도메인 이름(example.com)을 입력한 다음 whois 명령 출력에서 이메일 주소를 가져오는 간단한 bash 스크립트를 작성하고 있습니다.
동일한 입력 도메인을 가진 이메일을 찾고 싶습니다([이메일 보호됨]).
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}
실제로 사용할 용도가 보이지 않아 표현식 끝 부분을 제거하고 기호 앞의 영숫자 문자를 일치시키기 위해 기호 이름을 사용했습니다 @
.
또 다른 개선 사항은 모든 점을 다음으로 바꾸는 것입니다 $domain
.\.
whois "$domain" |
grep -m1 -Eio "\b[[:alnum:]._%+-]+@${domain//./\\.}\b"
이를 위해서는 비표준 인수 대체를 이해하는 bash
다른 쉘이 필요합니다.${variable//pattern/word}