操作系统:Windows Server 2003 DB2版本:db2exp v9.5
在使用db2cos脚本监控锁超时发现db2cos脚本中对参数的解析是如下实现的:
:iterargs
if %0. == . goto iterdone
:: These are the parameters that we recognize from the engine
if /i %0. == INSTANCE. set INSTANCE=%1
if /i %0. == DATABASE. set DATABASE=%1
if /i %0. == DBPART. set DBPART=%1
if /i %0. == PID. set PID=%1
if /i %0. == TID. set TID=%1
if /i %0. == EDUID. set EDUID=%1
if /i %0. == FUNCTION. set FUNCTION=%1
if /i %0. == COMPONENT. set COMPONENT=%1
if /i %0. == PROBE. set PROBE=%1
if /i %0. == TIMESTAMP. set TIMESTAMP=%1
if /i %0. == APPID. set APPID=%1
if /i %0. == APPHDL. set APPHDL=%1
if /i %0. == DIAGPATH. set DIAGPATH=%1
if /i %0. == REASON. set REASON=%1
if /i %0. == DESCRIPTION. set DESCRIPTION=%1
if /i %0. == DB2_DEBUG. set DB2_DEBUG=%1
shift
goto iterargs
:iterdone
这其中使用%0与%1配对的形式接收参数,这点我就不明白了,批处理中%0代替批处理命令本身,如test.bat,那么%0=test,%1~%9才是批处理的参数1-9。我怎么觉得其中应该写成:
:iterargs
if %1. == . goto iterdone
:: These are the parameters that we recognize from the engine
if /i %1. == INSTANCE. set INSTANCE=%2
if /i %1. == DATABASE. set DATABASE=%2
if /i %1. == DBPART. set DBPART=%2
if /i %1. == PID. set PID=%2
if /i %1. == TID. set TID=%2
if /i %1. == EDUID. set EDUID=%2
if /i %1. == FUNCTION. set FUNCTION=%2
if /i %1. == COMPONENT. set COMPONENT=%2
if /i %1. == PROBE. set PROBE=%2
if /i %1. == TIMESTAMP. set TIMESTAMP=%2
if /i %1. == APPID. set APPID=%2
if /i %1. == APPHDL. set APPHDL=%2
if /i %1. == DIAGPATH. set DIAGPATH=%2
if /i %1. == REASON. set REASON=%2
if /i %1. == DESCRIPTION. set DESCRIPTION=%2
if /i %1. == DB2_DEBUG. set DB2_DEBUG=%2
shift
goto iterargs
:iterdone
不知道是否该如何解释?