如何获取行号运行脚本后释放腻子中很多行的脚本

问题描述 投票:1回答:1

首先,我不是非常的Unix家伙...我必须在运行一个在腻子屏幕中释放1000多个行的命令后才能处理行数。一旦命令执行完成,它应该告诉我它抛出了多少行以及何时停止,我需要找到否。输出中的行数。

我在下面尝试,但没有成功。

#! /bin/sh
enqueext -env EXR3 -P 4032 -type EnquedocExR3 -loglevel 9
RESULT=$?
echo $exectime - enqueued `expr $RESULT - 10` documents >> $logdir/$joblog

上面的命令enqueext...释放1000多行。一旦停止,我需要查找它释放了多少行以捕获结果。

我正试图拒绝。通过表达式下面的行。

RESULT=$?

但是它最多可以给我提供240个文档计数。

我需要获取总数通过以上命令释放行。

shell runtime stdout stderr
1个回答
1
投票

如评论所指出,目前尚不清楚真正的目标是什么。从表面上看,输出包括对数行,因此很明显为什么需要对它们进行计数。顺便说一句,实现此目的的一种可能方法是使用tee和进程替换来计数行数,同时允许将输出显示到终端。

#! /bin/bash
enqueext -env EXR3 -P 4032 -type EnquedocExR3 -loglevel 9 2>&1 | tee >(wc -l > linecount.txt)
RESULT=$(<linecount.txt)
echo $exectime - enqueued `expr $RESULT - 10` documents >> $logdir/$joblog

注意:

  1. 解决方案正在使用进程替换,这需要一个支持它的shell(bash,zsh等)。解决方案使用bash。
  2. 尚不清楚输出是否到达stdout或stderr(给定-logLevel)。假设为标准错误。
  3. 用于在当前目录中保存行数(linecount.txt)的临时文件。可以修改到其他位置(例如/tmp/linecount.txt,...)
  4. 可以使用bash运算符$((...))代替expr
© www.soinside.com 2019 - 2024. All rights reserved.