Isso deve funcionar tanto no bash quanto no traço:
if [ ! -e targetfile ] || [ targetfile -nt sourcefile ]
then
echo "Already up to date"
exit 0
fi
No entanto, parece que você quer algo como make .
Em bash
você pode até escrever make -f- <<<'targetfile: sourcefile ;' && exit 0
,
mas a sintaxe <<<
é bash específica, por isso você precisa de echo "targetfile: sourcefile ;" | make -f- && exit 0
ou simplesmente um Makefile real. :)