我在 bash 脚本中有这个安装程序 shell 脚本。
- 我正在对现有文本文件进行重命名(备份它)。
- 我删除旧文件
将新文件复制到目标目录
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
这应该可以解决或阐明您的错误。