そのため、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
再び同じ宛先パスを持ちます。