Os utilitários teste [internos têm os testes -nt("mais recentes que") e -ot("mais antigos") na maioria dos shells, mesmo quando o shell está sendo executado no "modo POSIX" (também válido para os utilitários externos com os mesmos nomes no sistemas aos quais tenho acesso). Esses testes são para comparar registros de data e hora da modificação em dois arquivos. Sua semântica documentada varia ligeiramente nas implementações (com relação ao que acontece se um ou outro arquivo existir ou não), mas eles não estão incluídos na especificação POSIX. para o testutilitário .
Eles não foram transportados para o
testutilitário quando o comando condicional foi removido do shell [KornShell] porque não foram incluídos notestutilitário incorporado nas implementações históricas doshutilitário.
Supondo que eu gostaria de comparar o carimbo de data / hora da modificação entre os arquivos em um /bin/shscript de shell e, em seguida, executar uma ação, dependendo se um arquivo é mais recente que o outro, como em
if [ "$sigfile" -nt "$timestamp" ] ||
[ "$sigfile.tmp" -nt "$timestamp" ]
then
return
fi
... que outro utilitário eu poderia usar, além de make(o que tornaria o restante do script pesado para dizer o mínimo)? Ou devo apenas assumir que ninguém jamais executará o script em uma "implementação histórica de sh" ou renunciará a escrever para um shell específico como bash?
-ntrecurso detestuma maneira que é esperada desde aprox. 1995. Você deve usar afindexpressão basd, mesmo que combashum comportamento correto.