echo "DISPLAY QL($Queue) CURDEPTH" \
| runmqsc Queue_Managr \
| grep 'CURDEPTH(' \
| sed 's/.*CURDEPTH//' \
| tr -d '()'.
有人能告诉我这个剧本是怎么写的吗?实际上,此命令显示特定队列的特定q_管理器的当前深度值。
我理解
"DISPLAY QL($Queue) CURDEPTH" | runmqsc Queue_Managr"
-这个命令显示队列名和curdepth{value}。但我不明白。这个命令是如何工作的?
最佳答案
这是一条管道。它包含五个阶段,由管道字符|
分隔。一个阶段的输出用作下一阶段的输入。echo "DISPLAY blatti blatti"
-这只是输出一些文本。runmqsc Queue_Managr
-使用文本作为runmqsc
-命令的输入,该命令执行一些mq魔术并输出数据。grep 'CURDEPTH('
-grep是一个标准的unix实用程序。它过滤输入。在这种情况下,只允许包含文本CURDEPTH(
的行进入下一阶段。sed 's/.*CURDEPTH//'
-sed是另一个标准实用程序。它是“流编辑器”的缩写,允许您在输入通过时对其进行编辑。在本例中,表达式's/.*CURDEPTH//'
意味着删除从每行开始到文本CURDEPTH
的所有内容。(请记住,只有包含该文本的行是从上一阶段传递过来的)。tr -d '()'
-最后是另一个标准实用程序tr,它还允许编辑从输入流到输出的文本。-d '()'
表示从文本中删除字符(
和)
。
最后阶段的输出显示在终端中(如果在终端中运行脚本)。
这是在unix shell中构建脚本的一种相当常见的方法。以某种方式生成输入数据,将其推送到一个命令中,并通过两个阶段对输出数据进行按摩,每个阶段都执行一点点操作。
关于grep
、sed
和tr
的所有内容,都可以(也可能已经)撰写长篇论文。如果你感兴趣的话,可以查一下。
关于linux - Unix/Linux和MQ脚本说明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33916426/