命令退出状态的Bash测试

时间:2013-10-15 02:09:47

标签: bash

我创建了一个小的rsync脚本来同步我的播客。我已经将脚本配置为在完成后通过电子邮件发送给我。我试图测试rsync的退出状态来决定发送哪个消息。这是块:

my_command= rsync --log-file=/home/jake/logs/rsync.log -avzu $local_directory  $remote_directory  
if [ $? -eq 0 ]; then  
    $mail_expression_success  
else  
    $mail_expression_fail  
fi  

无论命令如何完成,我都会收到第一个变量中包含的消息。 $mail_expression_success

3 个答案:

答案 0 :(得分:2)

最好只做这样的事情:

if rsync ....
then
       echo Yay
else
       echo Oh noes
fi

答案 1 :(得分:1)

你想要做的是:

my_command=$(rsync --log-file=/home/jake/logs/rsync.log -avzu $local_directory  $remote_directory)
if [ $? -eq 0 ]; then  
    $mail_expression_success  
else  
    $mail_expression_fail  
fi  

答案 2 :(得分:0)

=之后你不能有空格。如果放置空格,则未正确分配值。最好不要将输出分配到f,只检查$?