svn - 验证失败时 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
命令的退出代码吗?
解决方案
是的,您可以检查命令的返回码。
例如,如果缺少修订文件:
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
推荐阅读
- postgresql - PGSQL 在特定条件下选择列
- java - Eclipse 无法读取位于 https://marketplace.eclipse.org/content/ibm-mq-explorer-version-9 的存储库
- groovy - 关闭 ActiveMQ 连接时 Java 线程挂起
- mongodb - 聚合内部字段 MongoDB
- wordpress - Yoast 搜索结果错误
- r - 创建按钮以子集和更新 R 绘图地图
- python - Python asyncio:单线程如何同时处理多个事情?
- .net - System.Data.SQLite 与 Microsoft.Data.Sqlite
- c# - Xunit 测试无法识别 JSON 测试数据文件何时发生更改
- google-cloud-platform - Google 最近是否更改了 UI 以授予对 Google Cloud Platform 中存储桶对象的公开访问权限?