Filenames

文件重命名後 Bash 複製命令不起作用

  • August 27, 2019

我在 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 操作沒有完成?

我看不到任何錯誤,因為它作為腳本的一部分執行;如果我手動執行命令,它工作正常。

如果我手動執行命令,它工作正常。

有一個線索。可能是路徑問題。當我寫東西時,尤其是腳本,我總是喜歡包含命令的路徑。

$ 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 

這應該可以解決或闡明您的錯誤。

引用自:https://unix.stackexchange.com/questions/537518