首页 > 解决方案 > 验证失败时 svnadmin verify 的退出代码是否为 1?

问题描述

我正在编写一个脚本来按计划对我们所有的存储库运行验证,可能每天。我正在使用 -q 选项(安静)运行它,并且试图弄清楚如何检测验证是否成功。文档中没有关于退出代码的任何内容,或者如果出现故障将得到什么输出。这是脚本:

#!/bin/bash
SVN_ROOT=#root directory for repositories#
for name in $SVN_ROOT/*;
do
    start_time=`date +%s`
    REPO_NAME=$(basename $name);
    echo "--------------------"
    echo "Verifying $REPO_NAME"
    svnadmin verify $name -q
    end_time=`date +%s`
    run_time=$((end_time-start_time))
    echo "Verification took $run_time seconds"
    echo "--------------------"
    echo
done

我们可以简单地检查svnadmin verify命令的退出代码吗?

标签: svn

解决方案


是的,您可以检查命令的返回码。

例如,如果缺少修订文件:

svnadmin verify ./fail-test/ > test.log
* Error verifying repository metadata.
svnadmin: E160006: No such revision 16

echo $? # -> 1

在有效的回购中:

svnadmin verify ./ok-repo/ > test.log
echo $? # -> 0

您可以对其进行测试$?或将其保存到变量中。

其他方法是将 stderr 重定向到文件并稍后检查其大小。

# this could be a loop
svnadmin verify fail-test > >(tee -a fail-test.out.log) 2> >(tee -a fail-test.err.log >&2)
svnadmin verify ok-repo > >(tee -a ok-repo.out.log) 2> >(tee -a ok-repo.err.log >&2)
# ...

# check size of errors
ls -l *.err.log

推荐阅读