Bash混合条件下的while循环

3

我并不是指多项条件,虽然这也是其中之一,但更多的是混合了各种因素:

while [[ read line ] && [ "$GoodURL" == "false" ]]

正确的形式是什么?这是一个while循环,逐行运行文本文件,我想用$GoodURL类型的布尔值停止它,请帮忙。谢谢。

1个回答

6
while read line && [[ "$GoodURL" == "false" ]]
do 
    echo $line; 
done

如果您想从文件/管道中读取内容,请确保使用重定向,否则您将得到奇怪的结果(由于while循环在子shell中执行,实际上并未使用与周围shell相同的环境)。

while read line && [[ "$GoodURL" == "false" ]]
do 
    echo $line; 
done < input.txt

如果我检查一个进程是否仍在运行,这种方法就不起作用。例如,while read LINE && [[ pgrep "gnote" > /dev/null ]] 会失败。pgrep gedit 可以检查应用程序是否仍在运行。有没有其他方法可以让它工作? - Khurshid Alam
啊,抱歉。while read LINE && pgrep "gnote" > /dev/null。这个也失败了。 - Khurshid Alam
@KhurshidAlam 对我来说非常好用。当然,pgrep在读取后运行,并且退出gnote不会中断它。你需要提出自己的问题。 - sehe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接