다양한 사용자 입력에 대해 여러 유효성 검사 규칙을 처리하는 방법은 무엇입니까?

다양한 사용자 입력에 대해 여러 유효성 검사 규칙을 처리하는 방법은 무엇입니까?

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

관련 정보