Il built-in test
e le [
utility hanno i test -nt
("più recenti di") e -ot
("più vecchi di") nella maggior parte delle shell, anche quando la shell è in esecuzione in "modalità POSIX" (vero anche per le utility esterne con gli stessi nomi sul sistemi a cui ho accesso). Questi test servono per confrontare i timestamp di modifica su due file. La loro semantica documentata varia leggermente tra le implementazioni (per quanto riguarda cosa succede se l'uno o l'altro file esiste su non), ma non sono inclusi nelle specifiche POSIX. per l' test
utilità .
Non sono stati portati avanti
test
nell'utilità quando il comando condizionale è stato rimosso dalla shell [KornShell] perché non sono stati inclusi nell'utilitàtest
integrata nelle implementazioni storichesh
dell'utilità.
Supponendo che vorrei confrontare il timestamp di modifica tra i file in uno /bin/sh
script di shell e quindi intervenire a seconda che un file sia più recente dell'altro, come in
if [ "$sigfile" -nt "$timestamp" ] ||
[ "$sigfile.tmp" -nt "$timestamp" ]
then
return
fi
... quale altra utility potrei usare, a parte make
(che renderebbe il resto dello script ingombrante per non dire altro)? O dovrei solo supporre che nessuno eseguirà mai la sceneggiatura su una "implementazione storica di sh
", o dimettersi dalla scrittura per una shell specifica come bash
?
-nt
funzione ditest
come ci si aspetta da ca. 1995. Dovresti usare l'find
espressione basd anchebash
se ti piace il comportamento corretto.