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"