그래서 Java 프로젝트용 빌드 스크립트를 작성 중인데 mvn clean
로컬 개발 중에는 실행되지 않습니다. 그래서 개발자가 -k
변수 $DEV_BUILD
를 1
.
function build_war {
if [ "$DEV_BUILD" -ne 1 ]; then
mvn clean
fi
cd "$PROJECT_HOME"
# Copy over static web files to ROOT
mkdir -p "$WAR_HOME"
cp -r js "$WAR_HOME/js"
rm -r "$WAR_HOME/js/src/com"
...
}
플래그 없이 스크립트를 실행하면 최종 -k
콘텐츠가 내부에 나타나고 명령이 작동합니다. 그러나 해당 플래그를 사용하여 스크립트를 실행하면 다른 디렉터리에 디렉터리가 있고 명령이 실패합니다.js
$WAR_HOME/js
rm
-k
js
rm
왜 이런 일이 일어나는지 아는 사람이 있나요?
편집하다
@Kusalananda의 의견에 따라 디렉터리가 이전에 존재했는지 확인하기 위해 스크립트에 몇 줄을 추가했습니다.
if [ ! -f "$WAR_HOME/js" ]; then
echo "js doesn't exist!!"
fi
cp -r js...
플래그가 있든 없든 "존재하지 않습니다"라는 메시지가 나타납니다 -k
.
답변1
당신이 사용할 때
cp source destination
은 destination
기존 디렉터리이므로 source
해당 디렉터리에 삭제됩니다.
따라서 복사하기 전에 해당 디렉토리가 삭제되지 않기 cp
때문에 동작이 다르게 보입니다.js
$WAR_HOME
다시동일한 대상 경로를 갖습니다.