2013-12-25 2 views
2

나는이 질문을 꽤 많이 몇 번이나 물었고 모든 대답을 읽었 음을 안다. 그들은 모두 유사하고 모든 종류의 변형을 시도했지만 아무 것도 올바르게 작동하지 않는 것 같습니다. 이 내 스크립트 파일입니다 '-'법적 이름은 AZ az 또는 기호가있는 이름입니다불법 문자 검사 문자열

#!/bin/bash 
names=` cut -d" " -f1-3 $1 ` 
if [[ "$names" =~ ^[-a-zA-Z]+$ ]] ; then 
    echo names are ok 
else 
echo bad names in file 
fi 

$ 1 파일의 이름이, 이것은 그 안에 무엇을 :

olga geller haifa 56 43 
sharon langer haifa 89 31 

기본적으로 모든 이름 (잘라 내기 명령 사용)을 가져 와서 1 개의 문자열 -> 이름으로 만듭니다. 모든 변형이 유효하지만이 변형 파일은 "파일에서 나쁜 이름"을 제공합니다. 숫자를 입력하면 어딘가에 인쇄됩니다. '을 입력하면!' [[]] 안이나 "if"바로 뒤에 있으면 작동하지 않습니다. 유효하고 유효하지 않은 이름에 대해 "이름이 맞습니다"라는 내용 만 인쇄됩니다. 내 실수는 어디에 있습니까?

답변

2

이름이있는 문자열은 개행으로 구분되므로 각 행을 검색하거나 read 개를 검색하고 일치하는 항목을 개별적으로 테스트해야합니다.

+0

확인. 알았다. btw, 내가 필요합니다 '!' 안 그래? – littlerunaway

+0

테스트를 수행하는 것처럼 필요하지 않아야합니다. – l0b0