Os três principais programas que eu uso em shell scripts são sed, grep e awk. O legal de cada um deles é expressões regulares. No shell, $ @ são todos os parâmetros posicionais, portanto você pode fazer echo de $ @ e canalizá-lo para awk ou grep.
echo $@ | awk '/\S+ - \S+/ {print}'
Com o grep você pode testar o valor de retorno, $ ?:
$ echo 1 - 9 | egrep '\S+ - \S+'
1 - 9
$ echo $?
0
$ echo - 9 | egrep '\S+ - \S+'
$ echo $?
1
Verifique o valor de retorno com o teste:
ARGS="$@"
MATCH=$(echo "$ARGS" | egrep '^\S+ - \S+')
if [ $? = 0 ]
then
echo "good match"
fi
Ou usando MATCH acima:
if [ -n "$MATCH" ]
then
echo "good match"
fi