나는 이것의 단순화된 버전을 찾고 있습니다:
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