2016-07-24 3 views
1

나는 사용자 입력 (첫 번째 인수)의 범위는 무엇 내가 가진 것은 내가 그에 대한 배열을 사용이배열 범위를 확인하는 방법은 무엇입니까?

#!/bin/bash 
count=$1 
if ! ((${#count[@]} == 8 || ${#count[@]} == 9 || ${#count[@]} == 10 || ${#count[@]} == 11 || ${#count[@]} == 12 || ${#count[@]} == 13 || ${#count[@]} == 14 || ${#count[@]} == 15 || ${#count[@]} == 16));then 
echo "Error - not in range [8-16] symbols" 
else 
echo "good" 
fi 

입니다 8 ~ 16 사이입니다 있는지 확인해야하지만 그것은 작동하지 않습니다. "if 문"으로 다른 구문을 시도했지만 여전히 아무것도 사용하지 않았습니다. 제 방법이 어리석은 것으로 보이기 때문에 첫 번째 주장의 범위를 확인할 수있는 다른 방법이 있습니까?

답변

1

것은 ${#1}를 사용하여 인수의 길이를 취득 후가에서 8 ~ 16 여부 정수의 범위를 확인 할 경우에 대비하여 bash 산술 비교 연산자 (())을 사용 : 그래서

((count>=8 && count<=16)) 

#!/bin/bash 
count=${#1} 
if ! ((count>=8 && count<=16)); then 
    echo "Error - not in range [8-16] symbols" 
else 
    echo "good" 
fi 
+0

그것은 나에게 AB 이 등 – Josh

+0

내 편집을 확인 @Josh 좋은 ... – heemayl

+0

이 지금은 저를 준다 체크 좋은 체크 safsaffa 좋은 "오류를 확인 마지막 결과 제공 -하지 범위 [IN을 8-16] 기호를 입력하십시오. 입력 할 문자 수는 – Josh

0

당신은 또한 입력의 길이를 확인하기 위해 정규 표현식을 사용할 수 있습니다 : 스크립트는 다음과 같이 다시 작성할 수 있습니다

if [[ $1 =~ .{8,16} ]]; then 
    echo "good" 
else 
    echo "Error - not in range [8-16] symbols" 
fi 
관련 문제