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