blob: 5b3c2d3192292e8dbed60022fd865fd5362be47c (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
#!/bin/sh
valid=0
check() {
[ \
"${#byr}" -eq 4 -a "${byr}" -ge 1920 -a "${byr}" -le 2002 -a \
"${#iyr}" -eq 4 -a "${iyr}" -ge 2010 -a "${iyr}" -le 2020 -a \
"${#eyr}" -eq 4 -a "${eyr}" -ge 2020 -a "${eyr}" -le 2030 \
] || return 0
case "${hgt}" in
(*cm) [ "${hgt%cm}" -ge 150 -a "${hgt%cm}" -le 193 ] || return 0 ;;
(*in) [ "${hgt%in}" -ge 59 -a "${hgt%in}" -le 76 ] || return 0 ;;
(*) return 0 ;;
esac
echo "${hcl}" | egrep -q '^#[0-9a-f]{6}$' || return 0
case "${ecl}" in
(amb|blu|brn|gry|grn|hzl|oth) ;;
(*) return 0 ;;
esac
[ "${#pid}" -eq 9 ] || return 0
return 1
}
validate() {
check
valid=$((valid + $?))
unset byr iyr eyr hgt hcl ecl pid cid
}
while :; do
read -r line
last=$?
if [ -n "${line}" ]; then
for pair in $line; do
var=${pair%:*}
val=${pair#*:}
eval "${var}=${val}"
done
else
validate
fi
[ $last -ne 0 ] && break
done
validate
echo $valid
|