将总计添加到bash脚本的输出中

将总计添加到bash脚本的输出中,bash,function,for-loop,while-loop,Bash,Function,For Loop,While Loop,我正在运行一个bash脚本,该脚本查看错误日志并生成一个在Mac终端中打印的报告 当前,输出如下所示: This error report is derived from Command Logs from ________ to __________. IP addresses: 109.xx.xxx.xxx Error Codes List: (code 12) (code 30) Common Errors - Count: Code 2: Code 10: Code

我正在运行一个bash脚本,该脚本查看错误日志并生成一个在Mac终端中打印的报告

当前,输出如下所示:

This error report is derived from Command Logs from ________ to __________.

IP addresses:

109.xx.xxx.xxx

Error Codes List: 

(code 12)
(code 30)

Common Errors - Count: 

Code 2: 
Code 10: 
Code 11: 
Code 12: 237
Code 14: 
Code 20: 
Code 23: 
Code 30: 5
Code 35: 
Code 37: 
Code 52: 
/usr/local/bin/backerr: line 45: `$skipping': not a valid identifier
Total: 242

Total Files Transferred: 
3558

Count complete.

The following are details for each error:   
// all of the 242 above-referenced lines //

Skipped files: 
// lists all of the lines that have the word 'skipping\ ' //
如您所见,我没有正确的标识符:

    /usr/local/bin/backerr: line 45: `$skipping': not a valid identifier
这是代码,我必须检测其中包含“跳过”的行,计算总数,并在上面的代码XX:total下打印总数。此外,我希望将“跳过”总数添加到“总计:242”

  count=()
  total=0

  while read skipping; do
        (( count[$skipping]++, total++ ))      
  done < <(grep 'skipping\ ' $input_variable)

  for $skipping in $input_variable; do
    echo "Skipped: ${count[$skipping]}"
  done
我被困在这里了。请帮忙

作为一种解决方法,不要使用以下代码:

      while read skipping; do
            (( count[$skipping]++, total++ ))      
      done < <(grep 'skipping\ ' $input_variable)

      for $skipping in $input_variable; do
        echo "Skipped: ${count[$skipping]}"
      done

但是,这并没有真正产生我最初设想的理想结果。

您的
for
循环不应该为索引变量使用美元符号:

for skipping in $input_variable; do
   ^^^ 

为什么
<@SMA::将命令的输出视为一个文件。在所有代码总计(代码2:代码10:代码11:代码12:237:代码14:代码20:代码23:代码30:5:代码35:代码37:代码52:)下面,我希望有一行显示“跳过:'n'”,其中“n”是总计。然后,我想将跳过的总数添加到底部的总数中。你明白吗?我刚刚用期望的结果更新了问题。谢谢。嗯,但是你如何从上面的输入中得到
107
349
数字呢?我做到了,但是我得到了`/usr/local/bin/script:line 44:filename:syntax error:invalid算术运算符(错误标记是“@filename””@technerdius脚本中的“filename”在哪里?filename是$input\u变量
  echo "Total Skipped Files: " ; egrep -c 'skipping' $input_variable ;
for skipping in $input_variable; do
   ^^^