따라서 내 스크립트에서는 매개변수 중 하나가 유효한 이메일 주소인지 확인해야 합니다. 시도했지만 실패했습니다.
if $maddr="^.$*\(@\)\(*\)\(.\)\(??*\)"
then
...
이는 최소 1개의 문자, 그 뒤에 @, 그 뒤에 아무 것도 없고 그 뒤에 점이 오고 그 뒤에 최소 2개의 문자가 옴을 의미합니다.
답변1
문자열을 정규식과 일치시키는 Unix 도구는 다음과 같습니다 expr
.
if expr "$maddr" : '..*@.*\...' > /dev/null; then...
(정규식은 암시적으로 expr
처음에 고정되어 있습니다.)
이 경우에는 간단한 쉘 패턴 일치로 충분합니다.
case $maddr in
?*@*.??*) ...
esac
일부 셸(예 zsh
: ksh93
및 ) 에는 표준 구문 위에 확장 기능 bash
으로 정규식 일치 연산자가 내장되어 있지만 구문은 이러한 셸 간에 약간 다릅니다.sh
pattern='.@.*\...'
if [[ $maddr =~ $pattern ]]; then...
세 가지 모두에서 작동해야 합니다.
(이러한 패턴은 유효한 이메일 주소를 보장하지 않습니다.)
답변2
_vaddr() { { cat
printf %s\\n "$@"
} | grep -o '[^ ]*@[^ ]*' |
grep -q "$REGEX" && {
$DO_SUCCESS
} || $HANDLE_FAILURE
}