计算终端中的行数,并将这些行保存到文本文件中,然后将其保存到变量中

时间:2019-05-24 20:29:23

标签: bash

我有一个shell脚本(例如test.sh),它在屏幕上打印出16个值,有时在屏幕上打印出错误消息(由于上游硬件问题)。我想计算屏幕上的行数,然后仅在有有效输出时保存。我无法同时执行两者。

我是Shell脚本的新手,所以我做了一些非常基本的事情

./test.sh | tee -a output1.txt       
A=./test.sh | wc -l

执行此操作时,长度不会保存在A

./test.sh | tee -a output1.txt       
A=./test.sh | wc -l

1 个答案:

答案 0 :(得分:0)

您不能同时执行两项操作。但是您一次只能做一个。

我认为您想检查./test.sh是否打印16行,如果是,请将其输出保存到文件中。这样做:

output=$(./test.sh)  # Capture output from "./test.sh" as "$output"
line_count=$(wc -l <<< "$output")  # Count lines in "$output"

if (( line_count = 16 )); then  # Check if "$line_count" is 16
    tee -a output1.txt <<< "$output"  # Append "$output" to "output1.txt" and stdout
fi

注释

  • cmd <<< strecho str | cmd的作用相同。
  • (( line_count = 16 ))[[ $line_count -eq 16 ]]
  • 具有相同的作用