Quando esses dois valores estão em uma variável como esta:
a="09:30:15"
b="13:00:34"
Você pode usar isso para comparar esses valores (com ksh93 ):
[ "${a//':'}" -lt "${b//':'}" ] && echo "okay" || echo "invalid arguments"
Isso usa ksh s expansão do parâmetro ${parameter//pattern/string} . A partir do manpage:
Expands parameter and replaces the longest match of pattern with the given string. [...] Each match for pattern is replaced by the given string.
Portanto, 09:30:15 expande para 093015 e 13:00:34 para 130434 . Esses são números inteiros que podem ser comparados pelo utilitário test . Na página do manual:
INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2
Editar : com ksh88 , que não tem o recurso ${parameter//pattern/string} , você deve remover o : com sed primeiro e comparar os valores:
a="$(printf '%s' "$a" | sed -e 's/://g')"
b="$(printf '%s' "$b" | sed -e 's/://g')"
[ "$a" -lt "$b" ] && echo "okay" || echo "invalid arguments"