모두 안녕하십니까,
수업 과제에서 이 작업을 해야 하는데 어떻게 해야 할지 잘 모르겠습니다.
스크립트는 사용자에게 두 변수 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