Le intégré testet les [utilitaires ont les tests -nt("plus récent que") et -ot("plus ancien que") dans la plupart des shells, même lorsque le shell s'exécute en "mode POSIX" (également vrai pour les utilitaires externes des mêmes noms sur le systèmes auxquels j'ai accès). Ces tests permettent de comparer les horodatages de modification sur deux fichiers. Leur sémantique documentée varie légèrement d'une implémentation à l'autre (en ce qui concerne ce qui se passe si l'un ou l'autre fichier n'existe pas), mais ils ne sont pas inclus dans la spécification POSIX. pour l' testutilitaire .
Ils n'ont pas été reportés dans l'
testutilitaire lorsque la commande conditionnelle a été supprimée du shell [KornShell] car ils n'ont pas été inclus dans l'testutilitaire intégré aux implémentations historiques de l'shutilitaire.
En supposant que je voudrais comparer l'horodatage de modification entre les fichiers dans un /bin/shscript shell et prendre des mesures selon que l' un fichier est plus récent que l'autre, comme dans
if [ "$sigfile" -nt "$timestamp" ] ||
[ "$sigfile.tmp" -nt "$timestamp" ]
then
return
fi
... quel autre utilitaire pourrais - je utiliser, à part make( ce qui rendrait le reste du script trop compliqué pour le moins)? Ou devrais-je simplement supposer que personne ne va jamais exécuter le script sur une "implémentation historique de sh", ou se résigner à écrire pour un shell spécifique comme bash?
-ntfonctionnalité detestmanière attendue depuis env. 1995. Vous devriez utiliser l'findexpression basd mêmebashsi vous aimez un comportement correct.