我正在寻找这个的简化版本:
dep=0
if [ ! -e targetfile ]
then
dep=1
elif [ targetfile -nt sourcefile ]
then
dep=1
fi
if [ $dep -eq 0 ]
then
echo "Already up to date"
exit 0
fi
似乎应该有一个命令可以在单个语句中测试源文件的存在性和寿命。不幸的是,-nt
如果目标文件根本不存在,bash 就会失败。我还需要它与bash
and兼容dash
(这就是我当前不使用 的原因&&
)。
答案1
这应该在 bash 和 dash 中都有效:
if [ ! -e targetfile ] || [ targetfile -nt sourcefile ]
then
echo "Already up to date"
exit 0
fi
然而,你似乎想要类似的东西制作。
您bash
甚至可以编写
make -f- <<<'targetfile: sourcefile ;' && exit 0
,
但<<<
语法是 bash 特定的,因此您需要
echo "targetfile: sourcefile ;" | make -f- && exit 0
或只是一个真正的 Makefile。 :)