2013-06-13 45 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