我有一个脚本,该脚本使用rsync在远程->本地方案中同步数据。运行rsync命令后,立即检查错误代码是否等于零。如果其为零,则执行其他命令。但是,这没有考虑到rsync可能已经成功运行但实际上并未进行任何更改的事实。因此,无论如何都将等于零条件运行,这有点多余。
rsync -aEivm --delete /path/to/remote/ /path/to/local/
if [ $? -eq 0 ]; then
# Success do some more work!
else
# Something went wrong!
exit 1;
fi
将其扩展为检查是否确实存在基于运行的rsync命令的任何更改的最佳方法是什么。我已经读过-i标志可以将输出提供给stdout,但是如何将其放在条件块中呢?
啊! 如果我取出-v并改用-i然后在rsync命令上使用非空字符串检查怎么办?
—
詹姆斯·怀特
看起来您自己找到了解决方案?:-)
—
Bjorn Munch
您可以使用
—
nitishch
a=$("rsync command")
。这将执行rsync
命令并存储stdout
在中a
。然后,您可以在a
您也可以添加a
—
比约恩·蒙克
| grep /
或类似的内容,然后使用来检查grep的退出状态,$?
如果没有输出,则应该为1。
-v
那里了,因此它已经在提供您需要输出的信息...例如,实际发送的文件列表。如果什么都没改变,那就是./
。