除了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