계속하기 전에 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
함수의 반환 값을 확인하고 다시 프롬프트하거나 종료합니다.