사용자가이 형식으로 입력을 제공하지 않을 때까지 같은 프롬프트가 반복해서 인쇄 될 때까지 쉘 코드로 DD/MM/YYYY
형식의 입력을 어떻게 할 수 있습니까?입력 루핑 루핑
printf "Please Enter START Date(DD/MM/YYYY)\n"
read date1
날짜가 DD/MM/YYYY 형식으로 제공되는지 여부를 확인하는 방법. 그렇다면이 루프를 다시 시작하는 방법은 무엇입니까?
사용자가이 형식으로 입력을 제공하지 않을 때까지 같은 프롬프트가 반복해서 인쇄 될 때까지 쉘 코드로 DD/MM/YYYY
형식의 입력을 어떻게 할 수 있습니까?입력 루핑 루핑
printf "Please Enter START Date(DD/MM/YYYY)\n"
read date1
날짜가 DD/MM/YYYY 형식으로 제공되는지 여부를 확인하는 방법. 그렇다면이 루프를 다시 시작하는 방법은 무엇입니까?
이 솔루션은 첫째을 사용하여 모든 토큰 입력의 의 구문을 확인하고 date
명령은 입력이 유효한 날짜인지 확인합니다. 예를 들어 20/02/02에 에 올바른 구문이 있지만 올바른 날짜가 아닙니다. 은 date
명령이 MM/DD/YYYY 형식을 허용한다는 점에 유의하십시오.
#!/bin/bash
while [ 1 ]; do
IFS="/" read -p "Please Enter START Date(DD/MM/YYYY): " d m y
if [[ $d != [0-9][0-9] ]]; then echo "Day format invalid"; continue; fi
if [[ $m != [0-9][0-9] ]]; then echo "Month format invalid"; continue; fi
if [[ $y != [0-9][0-9][0-9][0-9] ]]; then echo "Year format invalid"; continue; fi
if date -d "$m/$d/$y" > /dev/null; then
date1="$d/$m/$y"
break
fi
done
# Here you can use $date1 as you prefer. For instance:
echo $date1
이 하나의 시도 :
until read -p "Please Enter START Date (DD/MM/YYYY): " && [[ $REPLY == [0-9][0-9]/[0-9][0-9]/[0-9][0-9] ]]; do
## echo "Please enter in proper (DD/MM/YYYY) format."
continue
done
에코 부분은 당신이 추가하는 것을 고려 수 있다는 것을 단지 선택 사항입니다. 기본적으로 변수가 지정되지 않은 경우 $ REPLY 변수에 입력 된 장소를 읽지 만 원하는 경우 사용자 정의 값을 가질 수 있습니다. 조금
read -p "Please Enter START Date (DD/MM/YYYY): " INPUT && [[ $INPUT == ...
더 쉬 호환하고 자신의 형식을 기반으로이있을 수 있습니다 :
#!/bin/sh
while :; do
printf "Please Enter START Date(DD/MM/YYYY)\n"
read date1
case "$date1" in
[0-9][0-9]/[0-9][0-9]/[0-9][0-9])
break
;;
esac
done
고맙습니다. – user2663468
@ 두 번째 예를 들어 보면 [[0-9] [0-9]/[0-9] [0-9]/[0-9] [0-9]'not' [ 0-9] [0-9] | [0-9] [0-9] | [0-9] [0-9]'죄송합니다. 그리고 당신은 .. 환영합니다. – konsolebox