如果[[$(dspmq | grep'(正在运行)’| grep“$QMgr”| wc -l | tr -d“”)!= 1]]
上面的代码是检查队列管理器是否正在运行.
是否有任何命令来检查队列管理器中是否存在给定的队列名称?
解决方法
除了Rob和T.Rob所说的之外,还添加了另一个建议.
MQ v7.1及更高版本附带dmpmqcfg命令,您可以使用它来检查特定队列.
以下示例与您的示例一致,该示例检查队列管理器是否正在运行:
要使用dmpmqcfg检查是否存在任何类型的队列名称,您可以执行以下操作:
if dmpmqcfg -m ${QMgr} -t queue -x object -o 1line -n ${QName}|egrep '^DEFINE '; then echo "Queue ${QName} exists on Queue Manager ${QMgr} fi
使用方法Rob Parker提供*来检查是否存在任何类型的队列名称:
*注意我使用了disPLAY Q(而不是disPLAY QLOCAL(
if printf "disPLAY Q(${QName})" | runmqsc ${QMgr} 2>&1 >/dev/null; then echo "Queue ${QName} exists on Queue Manager ${QMgr} fi
您的示例检查队列管理器运行可以简化为:
if dspmq -m ${QMgr}| grep --quiet '(Running)'; then echo "Queue Manager ${QMgr} is Running" fi