В вашем сценарии есть две основные проблемы:
case
не закрывается выражением esac
. ||
, что является синтаксической ошибкой в большинстве Bourne -, подобных оболочкам (, использующих ''
или ""
или расширение, которое преобразуется в пустое значение для переносимого сопоставления с пустой строкой.)Непонятно, что на самом деле делает ваш скрипт, поэтому я немного порассуждал и написал это:
#!/bin/sh
input="$1"
case "$input" in
D|P|Q|L1|L2)
val='Hello' ;;
DD|DE|DF|CA)
val='Hi' ;;
MM|KL|""|TK|SZ)
val='Bye' ;;
*)
echo 'error' >&2
exit 1
esac
printf 'input was "%s", val is "%s"\n' "$input" "$val"
Проверка:
$./script.sh D
input was "D", val is "Hello"
$./script.sh MM
input was "MM", val is "Bye"
$./script.sh BOO
error
Строки, которые вы ищете, начинаются с 20/08/02
, а не с 2020/08/02
. Попробуйте %y
вместо %Y
, это даст последние две цифры года .