El incorporado test
y las [
utilidades tienen las pruebas -nt
("más nuevo que") y -ot
("más antiguo que") en la mayoría de los shells, incluso cuando el shell se ejecuta en "modo POSIX" (también es cierto para las utilidades externas de los mismos nombres en el sistemas a los que tengo acceso). Estas pruebas son para comparar marcas de tiempo de modificación en dos archivos. Su semántica documentada varía ligeramente entre las implementaciones (con respecto a lo que sucede si uno u otro archivo existe o no), pero no están incluidos en la especificación POSIX. para la test
utilidad .
No se
test
transfirieron a la utilidad cuando el comando condicional se eliminó del shell [KornShell] porque no se han incluido en latest
utilidad integrada en implementaciones históricas de lash
utilidad.
Suponiendo que me gustaría comparar la marca de tiempo de modificación entre archivos en un /bin/sh
script de shell y luego tomar medidas dependiendo de si un archivo es más nuevo que el otro, como en
if [ "$sigfile" -nt "$timestamp" ] ||
[ "$sigfile.tmp" -nt "$timestamp" ]
then
return
fi
... ¿qué otra utilidad podría usar, aparte de make
(lo que haría que el resto del script sea difícil de manejar por decir lo menos)? ¿O debería suponer que nadie ejecutará el script en una "implementación histórica de sh
", o renunciar a escribir para un shell específico como bash
?
-nt
función de latest
forma esperada ya que aprox. 1995. Debe usar lafind
expresión basd incluso conbash
si le gusta el comportamiento correcto.