即使大多数外壳程序在“ POSIX模式”下运行,内置的test和[实用程序在大多数外壳程序中都具有-nt(“比...更新”)和-ot(“比...更旧”)测试(对于在外壳上使用相同名称的外部实用程序也是如此)我可以访问的系统)。这些测试用于比较两个文件上的修改时间戳。它们的文档化语义在不同的实现中略有不同(关于一个或另一个文件不存在的情况),但是它们不包含在POSIX规范中。为test实用。
他们不结转到
test时,从[KornShell]壳去除有条件的命令,因为他们没有被列入工具test内置于历史实现实用sh工具。
假设我想比较/bin/shshell脚本中文件之间的修改时间戳,然后根据一个文件是否比另一个文件新来采取措施,如
if [ "$sigfile" -nt "$timestamp" ] ||
[ "$sigfile.tmp" -nt "$timestamp" ]
then
return
fi
...除了make(这至少会使脚本的其余部分难以理解)之外,我还可以使用其他什么实用程序?还是我应该假设没有人会在“的历史实现sh” 上运行脚本,或者辞职以编写像这样的特定 shell bash?
-nt功能test。1995。find即使bash您喜欢正确的行为,也应该使用basd表达式。