我有一个名为" Output_File.txt"包含本地队列列表,我想编写一个脚本来删除这些队列。我写的是:
queuelist=`wc -l Output_File.txt | awk -F ' ' '{print $1}'`
for (( currentline=1; currentline<=queuelist; currentline++ ))
do
currentqueue=`awk -v x="$currentline" 'NR==x {print $1}' 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.
如何更改代码以删除队列而不打印上面的输出?感谢。
答案 0 :(得分:0)
只需在for循环中使用echo "delete qlocal( $currentqueue )" | runmqsc > /dev/null
即可将该命令的所有输出定向到黑洞/dev/null
答案 1 :(得分:0)
你可以简化这一点,因为awk默认会遍历每一行,不需要计算行数,然后在awk中使用for循环。
awk awk '{print "delete qlocal("$1")"}' Output_File.txt | runmqsc > /dev/null
echo "the queues were deleted"
exit 0
请注意,这不执行任何类型的错误检查以确定删除是否成功,它可能由于多种原因而失败,例如队列名称不正确,队列中仍有消息,队列目前由一个流程打开。