Bash 从stdout计算行

Bash 从stdout计算行,bash,scripting,Bash,Scripting,我有一个bash脚本,它在循环中执行一个程序。我想评估标准输出中的每一行,如果它符合我的条件,我会做一些事情 我仍然希望能够在屏幕上看到stdout。有没有一个简单的方法来实现这一点?谢谢 有几种不同的输入循环,但一种可能是: my_cmd | while read line; do echo "$line" my_process "$line" done 这应该满足您的要求: for string in "a" "b" "c" do output=`echo ${st

我有一个bash脚本,它在循环中执行一个程序。我想评估标准输出中的每一行,如果它符合我的条件,我会做一些事情


我仍然希望能够在屏幕上看到stdout。有没有一个简单的方法来实现这一点?谢谢

有几种不同的输入循环,但一种可能是:

my_cmd | while read line; do
    echo "$line"
    my_process "$line"
done

这应该满足您的要求:

for string in "a" "b" "c"
do
    output=`echo ${string}`
    echo ${output}
    if [ ${output} == "b" ] ; then
        echo "do something"
    fi
done

只需用您的程序替换第一个echo。

注意,您可以使用multiplve变量名将块读入其中(
|同时读取id号说明;do echo$number:$id;done
)要保留空白,请引用变量:
echo“$line”;my_进程“$line”
另外,请注意,将
while
放在管道中意味着while主体在子进程中执行。根据
my_进程是什么,OP可能不希望这样,因此:
在读取-r行时;做done<您的意思是要回显正在分析的行吗?这是在字符串文本列表上进行迭代。这个问题特别要求将STDOUT中的行作为iterable对象。以下工作:for string in
ls.
do echo$string done