繁体   English   中英

命令退出状态的Bash测试

[英]Bash test for command exit status

我创建了一个小的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

最好只做这样的事情:

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

你想要做的是:

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  

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM