我正在创build一个bash脚本,使用whiptail为我进行签出。 我已经有了所有的工作,但我想检查,如果我可以达到svn之前显示菜单等
目前我打算做svn ls svn://主机并检查响应是否等于svn:未知主机名'主机'。 如果是的话退出/显示味精。
有没有更好的方法来使用shell命令来做到这一点?
Grtz Michael
你的解决scheme似乎是足够好的,因为如果你要做结帐,保证在系统上安装svn 。 所以没有额外的要求只是检查远程端口是否打开。
但是,另一种可能的解决scheme是使用安装在大多数类UNIX系统上的netcat :
#! /bin/sh TIMEOUT=2 # in seconds HOST=$1 PORT=$2 $(nc -z -w ${TIMEOUT} ${HOST} ${PORT}) || \ exit 1 # Port is closed # Port is open, continue processing
基于netcat的脚本的好处是超时值可以防止我们在受DROP防火墙规则保护的端口上等待大量时间。
你不应该检查命令输出。只是状态应该是足够的。
#!/bin/sh svn info ${SVN_URL} if [ $? -eq 1 ]; then echo "svn command failed: unable to access ${SVN_URL}"; exit 1; fi #else continue svn server appears to be ok
这样做的好处是它也会在input错误的url时失败。
干杯