我创建了一个小的rsync脚本来同步我的播客。我已经配置脚本在完成时给我发电子邮件。我正在尝试测试rsync的退出状态以决定发送哪条消息。这里是块:命令退出状态的Bash测试
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
。
你在哪里执行rsync命令?看起来你只是把它分配给一个总是成功的变量。 – vidit
你为什么认为rsync失败?你在这里发布的代码看起来很好(但有点奇怪,因为空字符串赋给'my_command'没有用)。 –
有两个问题:如果'my_command =“rsync ...”'是有意的,那么它确实是一个总是成功的变量赋值,尽管实际上从未调用过rsync。如果目的是通过'my_command = $(rsync ...)'来获取'rsync'的输出,那么会调用rsync,但不是将输出分配给'my_command',而是简单地运行'rsync'一个环境,其中'my_command'为空值(并被'rsync'忽略)。就后一种情况而言,正如William Pursell所指出的那样,“rsync”确实成功了。 – chepner