
私はこれの単純化されたバージョンを探しています:
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によって異なりますので、実際のMakefileが必要
です。 :)<<<
echo "targetfile: sourcefile ;" | make -f- && exit 0