我有一个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
答案 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 <<< str
与echo str | cmd
的作用相同。(( line_count = 16 ))
与[[ $line_count -eq 16 ]]