2013-12-19 5 views
2

주어진 문자열에 문자 또는 하이픈 이외의 문자가 포함되어 있는지 알려주는 bash 스크립트에서 조건을 만들려고했습니다. 문자열에 특정 문자가 포함되어 있는지 확인하는 방법

즉, 이것은 법적 문자열입니다 hello-world

과 하나가되지 않습니다 : hello-123-there

이것은 내가 지금까지 시도한 것입니다하지만 난 또한 로직 실수 있다고 생각 :

if ! [[ "$1" == *-* ]] && ! [[ "$1" =~ ^[a-zA-Z]+$ ]] ; then 
     echo "the line is bad" 
     exit 
fi 

(물론 $ 1은 문자열을 참조하는 반면). 도움을 받기를 원합니다.

답변

3

당신은 BASH의 정규식 기능을 사용할 수 있습니다 :

[[ "$str" =~ ^[a-zA-Z-]*$ ]] && echo "valid" || echo "invalid" 

또는 사용 글로브 :

[[ "$str" == *[^-[:alpha:]]* ]] && echo "invalid" || echo "valid" 

으로 동일합니다

if [[ "$str" =~ ^[a-zA-Z-]*$ ]]; then 
    echo "valid" 
else 
    echo "invalid" 
fi 
+0

감사하지만 - 난 "는 이해 해달라고 && "및"|| " usgae, plz 당신이 조건을 쓸 수 있습니까? 감사. –

+0

업데이트 된 답변 확인. – anubhava

+0

이게 당신이 찾고 있는게 있나요? – anubhava

관련 문제