文件重命名后 Bash 复制命令不起作用

文件重命名后 Bash 复制命令不起作用

我在 bash 脚本中有这个安装程序 shell 脚本。

  1. 我正在对现有文本文件进行重命名(备份它)。
  2. 我删除旧文件
  3. 将新文件复制到目标目录

    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 

这应该可以解决或阐明您的错误。

相关内容