2012-05-16 48 views
1

我一直在寻找互联网,但没有一个“解决方案”已经工作。我创建2个变量与命令的结果,然后我试图把它们与如果比较,但它只是不工作:(创建2个变量并使用它们进行比较

#!/bin/bash 

pre_result=`digest -a md5 -v $1` 
md5=${pre_result:(-33)} 

pre_result2=`digest -a md5 -v /respaldo/directorio` 
md52=${pre_result2:(-33)} 

if $md5 != $md52 
then 
    fecha=`date` 
    `mkdir /respaldo/"$fecha"` 
    `cp $1 /respaldo/"$fecha"/` 
else 
    echo ':(' 
fi 

非常感谢您的关注,并为不良遗憾英文;)

+1

如果你在你的'mkdir'和'cp'命令后面加反引号,你会得到一个错误。把它们留下。在需要的地方('digest'和'date'),你应该使用'$()'代替(例如'$(date)')。它更易读易用。参见[BashFAQ/082](http://mywiki.wooledge.org/BashFAQ/082)。你的英语很好。 –

回答

3

条件表达式需要位于bash中的括号内。

所以,你的if语句应该是:

if [[ $md5 != $md52 ]] 
then 
# do stuff 
fi 

This link大约有bash的条件表达式的更多细节。

+0

谢谢,我是一个noob :(! – kentverger

+0

更好的办法是使用'[['和']]'如果写入bash而不是POSIX sh - 除此之外,这实际上不需要引用左边的内容, (即''[[$ md5!='$ md52“]]'(并且只需要引用右边的内容只会阻止它被视为glob,而不是由于字符串的潜在可能性)分裂) –

+0

@CharlesDuffy是的,我总是不确定是否使用POSIX sh。我想因为他指定了bash,所以没关系,请参阅我的编辑。 –

相关问题