使用特定前缀删除队列的脚本
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
请注意,这不会进行任何类型的错误检查来确定删除是否成功,它可能会因多种原因而失败,例如队列名称不正确,队列中仍有消息它,当前由进程打开的队列。
我有一个名为 "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
请注意,这不会进行任何类型的错误检查来确定删除是否成功,它可能会因多种原因而失败,例如队列名称不正确,队列中仍有消息它,当前由进程打开的队列。