Bashスクリプト内にこのインストーラシェルスクリプトがあります。
- 既存のテキストファイルの名前を変更しようとしています(バックアップ中)。
- 古いファイルを削除します
新しいファイルをターゲットディレクトリにコピーする
mv /target/data.ini /target/data_$(date +"%Y%m%d_%H%M%S").ini rm -f /target/data.ini cp /install/data.ini /target/data.ini
何らかの理由で、cpコマンドは常にファイルをコピーするわけではありません。
以前のmvまたはrm操作が完了していない可能性はありますか?
スクリプトの一部として実行されるため、エラーは表示されません。コマンドを手動で実行すると正常に動作します。
答え1
コマンドを手動で実行すると正常に動作します。
手がかりがあります。たぶんパスの問題かもしれません。私は何か、特にスクリプトを書くときは、常にコマンドへのパスを含めるのが好きです。
$ which date
/usr/bin/date
次に、スクリプトにエラーチェックを追加します。
if [ -f /target/data.ini ]
then
# Note spaces separating the parenthesis from the command
/bin/mv /target/data.ini /target/data_$( /usr/bin/date +"%Y%m%d_%H%M%S" ).ini
if [ $? -ne 0 ]
then
echo "Error on MV command"
exit
fi
else
echo "Error: Can't find /target/data.ini"
exit
fi
cp /install/data.ini /target/data.ini
#Same type of error checking here
これにより、エラーが解決または明確になります。