Вбудовані 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
якщо вам подобається правильна поведінка.