쉘 스크립트 - 두 개의 변수가 있는 이중 조건부

쉘 스크립트 - 두 개의 변수가 있는 이중 조건부

모두 안녕하십니까,

수업 과제에서 이 작업을 해야 하는데 어떻게 해야 할지 잘 모르겠습니다.

스크립트는 사용자에게 두 변수 L과 C를 채울 두 개의 별도 명령문을 요청합니다. L과 C가 모두 1~3 범위에 있는지 확인해야 합니다. L 또는 C 값이 1보다 낮거나 3보다 높으면(범위를 벗어남) 스크립트는 경고를 인쇄하고 새 값을 요청해야 합니다.

printf "Please, enter L and C: "
read L C
while [[ $L -ge 1 -a $L -le 3 ]]; do
    while [[ $C -ge 1 -a $C -ge 3 ]]; do

이는 예상대로 작동합니다(루프). 이 문제를 더 잘 처리할 수 있는 방법이 있나요?

감사해요,

라파엘

답변1

가독성을 위해 다음과 같은 작업을 수행합니다.

checkrange() {
   if [[ "$1" -le 3 ]] && [[ "$1" -ge 1 ]]; then
      return 0
   else
      return 1
   fi
}

L=0
C=0
prompt="Please enter values for L and C >"
while ! ( checkrange "$L" && checkrange "$C" ); do
   read -p "$prompt" L C
   prompt="Invalid input; please enter new values for L and C >"
done

관련 정보