![다양한 사용자 입력에 대해 여러 유효성 검사 규칙을 처리하는 방법은 무엇입니까?](https://linux55.com/image/87455/%EB%8B%A4%EC%96%91%ED%95%9C%20%EC%82%AC%EC%9A%A9%EC%9E%90%20%EC%9E%85%EB%A0%A5%EC%97%90%20%EB%8C%80%ED%95%B4%20%EC%97%AC%EB%9F%AC%20%EC%9C%A0%ED%9A%A8%EC%84%B1%20%EA%B2%80%EC%82%AC%20%EA%B7%9C%EC%B9%99%EC%9D%84%20%EC%B2%98%EB%A6%AC%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
계속하기 전에 Bash 스크립트를 사용하여 사용자에게 몇 가지 변수를 묻는 메시지를 표시합니다. 정적 유효성 검사 규칙을 만들고 사용자 입력에 따라 "단품"으로 실행하려면 어떻게 해야 합니까?
예:
function q1 () {
echo "Do you have an answer?"
read input
# I know this is wrong but should get the idea across
chkEmpty($input)
chkSpecial($input)
}
function chkEmpty () {
if [[ $input = "" ]]; then
echo "Input required!"
# Back to Prompt
else
# Continue to next validation rule or question
fi
}
function chkSpecial () {
re="^[-a-zA-Z0-9\.]+$"
if ! [[ $input =~ $re ]]; then
echo "Cannot use special characters!"
# Back to prompt
else
# Continue to next validation rule or question
fi
}
function chkSize () {
etc...
}
etc...
답변1
$1
이 함수는 매개변수 $2
등을 가져옵니다. 또한 셸에서는 괄호 없이 호출되므로 코드는 다음과 같습니다.거의옳은.
귀하의 함수 구문도 올바르지 않습니다. 괄호 또는 단어를 사용하고 있습니다 function
. 마지막으로 반환 결과(프로세스의 종료 코드처럼 작동)를 사용할 수 있습니다 return
.
chkEmpty() {
if [[ "$1" = "" ]]; then
echo "Input required!"
return 1 # remember: in shell, non-0 means "not ok"
else
return 0 # remember: in shell, 0 means "ok"
fi
}
이제 다음과 같이 호출할 수 있습니다.
function q1 () {
echo "Do you have an answer?"
read input
chkEmpty $input && chkSpecial $input # && ...
}
예를 들어 다시 메시지를 표시하거나 스크립트를 중단하는 등 잘못된 입력을 처리하려면 일부 코드를 추가해야 합니다. while
/ until
및를 사용하는 경우 if
함수의 반환 값을 확인하고 다시 프롬프트하거나 종료합니다.