Вбудовані testта [утиліти мають тести -nt("новіші за") та -ot("старіші за") у більшості оболонок, навіть коли оболонка працює в режимі POSIX (також справедливо для зовнішніх утиліт з однойменними назвами на системи, до яких я маю доступ). Ці тести для порівняння часових позначок модифікації на два файли. Їх задокументована семантика дещо відрізняється в різних реалізаціях (що стосується того, що відбувається, якщо той чи інший файл існує не), але вони не включені до специфікації POSIX. за testутиліту .
Вони не були перенесені в
testутиліту, коли умовна команда була вилучена з оболонки [KornShell], оскільки вони не були включені вtestутиліту, вбудовану в історичні реалізації цієїshутиліти.
Припускаючи, що я хотів би порівняти часову позначку модифікації між файлами в /bin/shсценарії оболонки, а потім вжити заходів залежно від того, чи є один файл новішим, ніж інший, як у
if [ "$sigfile" -nt "$timestamp" ] ||
[ "$sigfile.tmp" -nt "$timestamp" ]
then
return
fi
... якою іншою утилітою я міг би скористатися, окрім make(що зробило б решту сценарію найменш складною)? Або я просто припускаю, що ніхто ніколи не збирається запускати сценарій про "історичну реалізацію sh", або відмовлятися від написання для конкретної оболонки, як bash?
-ntфункціюtestтаким чином, який очікується приблизно з ок. 1995. Ви повинні використовуватиfindвираз basd, навітьbashякщо вам подобається правильна поведінка.