首页 > 解决方案 > 有一个 bash“while”循环,要么从 STDIN 读取行,要么调用函数

问题描述

我是 bash 脚本的新手。我可以做这个:

while [ read line ] 
do
    # do something with $lin
done

我也可以这样做:

while [ checkBufferedLines ]
do
    # do something
done

但我想要完成的是这样的:

while [ read line ] || [ checkBufferedLines ]
do
    # do something with $line or the buffered lines
done

$line简而言之,如果 a被分配stdin或函数调用返回trueor ,我希望循环运行1并且我希望 a$line短路函数调用(如果存在)。

这就是我想要完成的;可以这样做吗?或者将read line停止循环,因此checkBufferedLines函数也不会在“或”条件下进行评估?

标签: bash

解决方案


推荐阅读