2013-06-13 80 views
0

我有一個小小的bash腳本,我比較兩個文件。如果一個不存在,第二個存在,那麼我將複製/替換備份到主文件夾。如果失敗或複製功能失敗?

不知何故,這似乎並不奏效。希望有人能幫忙就這一個:

#!/bin/bash 

if [ ! -f "/Folder1/$1.jpg" ] && [ -f "/BU_Folder2/$1_BU.jpg" ]; then 
    cp -fp /BU_Folder2/$1_BU.jpg /Folder1/$1.jpg 
    cp -fp /BU_Folder2/$1_BU.mp4 /Folder1/$1.mp4 
fi 
+1

你能澄清「有些如何這似乎不工作」? – tbsalling

+1

是否嘗試過'-a'而不是'&&'並使用單個'[....]',即'[... -a ...]'? – Bill

+0

即使有備份文件,也不會將其複製到主文件夾。有沒有辦法調試這個或寫一個日誌,比較完成後是什麼結果? – user1857016

回答

0

在提示符,運行以下命令:

$ set -- FILENAME # FILENAME is the value you think $1 is supposed to have 
$ [ ! -f "/Folder1/$1.jpg" ] && [ -f "/BU_Folder2/$1_BU.jpg" ] && echo success 

如果最後的命令不打印「成功」,那麼你的腳本可能不您認爲它具有$1的價值。將echo $1添加到腳本的頂部以進行確認。

如果確實打印出「成功」,並且您的腳本沒有來自cp的錯誤輸出,我不知道該怎麼建議。

+0

嗨 我確定$ 1是可以的,因爲這只是重啓時自動啓動的腳本的一部分,其他任務使用$ 1。 如果我用自己的腳本創建相同的行並從命令promt運行它,它工作得很好。 如上所述,腳本在啓動時啓動(/etc/init.d/S99CheckFiles),並且可能存在某種用戶權限問題? BR, jii – user1857016

+0

啊,是的。如果當前用戶對/ Folder或/ BU_Folder2沒有讀取權限,則即使該文件確實存在,測試也將返回false。 – chepner