질문이 있어요
If [[ * ]]
then
continue
else
exit 1
fi
-d 3
예를 들어 내 스위치에 대한 인수가 유효한 양의 십진 정수( 에서 까지의 하나 이상의 ASCII 문자 시퀀스) 인지 테스트하고 싶습니다 . 그 이후에는 숫자만 가능합니다. 다른 모든 것은 끔찍합니다. 대신 무엇을 넣어야할지 모르겠습니다.0
9
-d
[0,infinity)
*
도와주세요? -d
위치 뒤의 매개변수입니다 $2
.
답변1
질문과 의견에서 $2
음수가 아닌 정수여야 합니다.
if [[ "$2" =~ ^[0-9]+$ ]]
then
...
또한 if
소문자로 쓰여 있다는 점에 유의하세요 i
.
사용 중인 Bash 버전이 정규식(<3.x)을 지원하지 않는 경우 다음을 사용하여 grep
어려운 작업을 수행할 수 있습니다.
if printf "%s\n" "$2" | grep -qE '^[0-9]+$'
then
...
하지만 보세요스티븐의 코멘트이 접근 방식에는 주의 사항이 있을 수 있습니다.
답변2
Bourne과 같은 쉘의 경우(즉, 1970년대로 거슬러 올라감):
case $2 in
"" | *[!0-9]*) echo >&2 not OK; exit 1;;
*) echo OK;;
esac