내 말은 ,,,,등이 $yy
되어야 한다는 뜻입니다 .2019
2020
2021
$yy
그렇다면 실패해야 한다20199
201987
4자리 숫자만 가능합니다.
이 상황을 확인하는 방법..
yy =$1
if [ $yy > 4 ] ----- something like this
then
echo "Year should be 4 digits only"
fi
답변1
POSIX 셸에서:
case $yy in
([[:digit:]][[:digit:]][[:digit:]][[:digit:]])
echo OK;;
(*)
echo >&2 not OK;;
esac
다음과 같은 함수에 넣을 수도 있습니다.
valid_year() case $1 in
([[:digit:]][[:digit:]][[:digit:]][[:digit:]])
true;;
(*)
false;;
esac
그런 다음 if
다음과 같은 구성에서 사용하십시오.
if valid_year "$yy"; then
echo OK
else
echo >&2 not OK
fi
ksh93을 사용하면 다음과 같이 단축할 수 있습니다.
case $yy in
({4}(\d)) echo OK;;
(*) echo >&2 not OK;;
esac
그리고 zsh -o extendedglob
:
case $yy in
([0-9](#c4)) echo OK;;
(*) echo >&2 not OK;;
esac
bash/zsh/ksh93/yash를 사용하면 다음을 사용할 수도 있습니다.
if [[ $yy =~ [[:digit:]]{4} ]]; then
echo OK
else
echo >&2 not OK
fi
문자 단위의 변수 길이만 확인하려면 case $yy in (????)
대신 다음을 수행할 수 있습니다.
if [ "${#yy}" -eq 4 ]; then
echo OK
else
echo >&2 not OK
fi
다른 더 복잡한 POSIX 방법은 이 [
유틸리티를 사용하여 변수의 길이가 4자이고 숫자를 제외한 문자가 포함되어 있지 않은지 확인합니다.
if [ "${#yy}" -eq 4 ] && [ -n "${yy##*[![:digit:]]*}" ]; then
echo OK
else
echo >&2 not OK
fi