Filenames
文件重命名後 Bash 複製命令不起作用
我在 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 操作沒有完成?
我看不到任何錯誤,因為它作為腳本的一部分執行;如果我手動執行命令,它工作正常。
如果我手動執行命令,它工作正常。
有一個線索。可能是路徑問題。當我寫東西時,尤其是腳本,我總是喜歡包含命令的路徑。
$ 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
這應該可以解決或闡明您的錯誤。