使用特定前缀删除队列的脚本

script for deleting queues using a certain prefix

我有一个名为 "Output_File.txt" 的文件,其中包含一个本地队列列表,我想编写一个脚本来删除这些队列。我写的是:

queuelist=`wc -l Output_File.txt | awk -F ' ' '{print }'`
for (( currentline=1; currentline<=queuelist; currentline++ ))
do
   currentqueue=`awk -v x="$currentline" 'NR==x {print }' Output_File.txt
   echo "delete qlocal( $currentqueue )" | runmqsc
done
echo "the queues were deleted"
exit 0

问题是脚本确实会删除队列,但会为每个已删除的队列打印以下输出:

1 : delete qlocal ( -queue_name- )
AMQ8007: WEBSPHERE MQ QUEUE DELETED.
NO COMMANDS HAVE SYNTAX ERROR.
ALL VALID MQSC COMMAND WERE PROCESSED.

如何在不打印上述输出的情况下更改代码以删除队列?谢谢。

只需在 for 循环中使用 echo "delete qlocal( $currentqueue )" | runmqsc > /dev/null 将该命令的所有输出定向到黑洞 /dev/null

您可以大大简化这一点,因为 awk 默认会遍历每一行,无需计算行数然后在 awk 中使用 for 循环。

awk awk '{print "delete qlocal("")"}' Output_File.txt | runmqsc > /dev/null

echo "the queues were deleted"
exit 0

请注意,这不会进行任何类型的错误检查来确定删除是否成功,它可能会因多种原因而失败,例如队列名称不正确,队列中仍有消息它,当前由进程打开的队列。