제1장: The Missing Code Library -- 5. 합 법화 정형 입력
#!/bin/sh
# validint.sh -- , 。
function validint
{
# 。
# $2 $3 , : $2 <= <= $3
number="$1"; min="$2"; max="$3"
if [ -z $number ]; then
echo " 。 。" >&2
return 1
fi
if [ "${number%${number#?}}" = "-" ]; then #
testvalue="${number#?}" #
else
testvalue="$number"
fi
nodigits="$(echo $testvalue | sed 's/[[:digit:]]//g')"
if [ ! -z $nodigits ]; then
echo " ! , 、 " >&2
return 1
fi
if [ ! -z $min ]; then
if [ "$number" -lt "$min" ]; then
echo " : $min" >&2
return 1
fi
fi
if [ ! -z $max ]; then
if [ "$number" -gt "$max" ]; then
echo " : $max" >&2
return 1
fi
fi
return 0
}
스 크 립 트 실행:
전체 스 크 립 트 는 하나의 함수 로 다른 셸 스 크 립 트 에 복사 하거나 라 이브 러 리 파일 로 복사 할 수 있 습 니 다.명령 행 에서 이 파일 을 실행 할 수 있 도록 몇 줄 만 간단하게 추가 하면 됩 니 다.
if validint "$1""$2""$3"; then
echo "That input is a valid integer value within your constraints"
fi
실행 결과:
./validint.sh
。 。
./validint.sh 1234.3
! , 、
./validint.sh 103 1 100
: 100
./validint.sh -17 0 25
: 0
./validint.sh -17 -20 25
That input is a valid integer value within your constraints
스 크 립 트 분석: 이 스 크 립 트 에서 첫 번 째 문자 가 마이너스 인지 아 닌 지 를 판단 하 는 문 구 를 주의 하 십시오.
if [ "${number%${number#?}}" = "-" ]; then
첫 번 째 문자 가 마이너스 라면 정수 의 수치 부분 을 testvalue 에 부여 합 니 다.그리고 이 마이너스 가 아 닌 값 은 그 안에 포 함 된 모든 숫자 를 제거 하고 나머지 를 테스트 한다.스 크 립 트 에 포 함 된 if 문 구 를 AND 로 연결 하려 고 시도 할 수도 있 습 니 다.예 를 들 어 아래 코드 도 실행 할 수 있 을 것 같 습 니 다.
if [ ! -z $min -a "$number"-lt "$min"]; then echo "입력 한 값 이 너무 작 습 니 다: 입력 한 하한 선 은 $min 입 니 다"> & 2 exit 1 fi 그러나 셸 스 크 립 트 에서 AND 문 구 를 연결 하 는 두 번 째 테스트 조건 이 테스트 되 지 않 을 것 이 라 고 장담 할 수 없습니다. AND 앞의 첫 번 째 테스트 가 False 로 증명 되 었 더 라 도.(주: 셸 의 불확실 성, 구체 적 인 원리, 일곱 째 는 아직 확실하게 탐색 하지 못 했 습 니 다. 아 는 친구 가 있 으 면 일곱 째 에 게 대답 해 보 세 요. ^ ^)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
용감한 바로 가기 및 우분투 응용 프로그램안녕하세요 여러분, 이 기사에서는 모든 사이트에서 pwa를 생성하고 실행기 응용 프로그램으로 추가하는 방법을 설명하고 싶습니다. 일부 웹사이트는 PWA로 설치를 허용하지 않지만 유사한 애플리케이션을 원합니다. 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.