Два опечатки:
Прежде всего вам нужно использовать $ 1, а не $ arg, чтобы получить первый параметр функции.
Во-вторых, я думаю, что вы хотели отобразить $ NUM, а не переданный аргумент!
isyear() {
case $1 in
[0-9][0-9][0-9][0-9]) NUM=1 ;;
*) NUM=0 ;;
esac
echo $NUM
}
Вы могли бы также рассмотреть переработку этого как это:
#!/bin/bash
isyear() {
case $1 in
[0-9][0-9][0-9][0-9]) return 1 ;;
*) return 0 ;;
esac
}
isyear cheese
if [ "$?" -eq "1" ]; then
echo "Yes, it is a year!"
else
echo "Darn!"
fi
isyear 2009
if [ "$?" -eq "1" ]; then
echo "Yes, it is a year!"
else
echo "Darn!"
fi