Bash中的延迟监控

时间:2011-03-23 14:46:06

标签: linux bash scripting terminal

在Bash脚本中“等待”的最佳方法是什么,直到命令的结果包含特定模式?

我编写了一个简单的脚本来修复RAID阵列,现在我希望脚本等到命令cat /proc/mdstat报告阵列的重建完成。我想等一下,因为之后我需要通过sudo grub-install /dev/sd*

在新设备上安装Grub

2 个答案:

答案 0 :(得分:2)

(对于bash来说,有更简洁的方法可以做一些这样的事情,但在做这样的事情时我倾向于用便携式SH写:)

weredone=0
while test $weredone = 0 ; do
    # this is not actually what you want to grep for, but you get the idea:
    grep complete /proc/mdstat
    if test $? = 0 ; then
        weredone=1
    else
        sleep 5
    fi
done

答案 1 :(得分:2)

这样的东西
#! /bin/bash
doneString="RAIDFix Completed successfully"

until ${mdstat_done:-false} ; do
    if grep "${doneString:?}"  /proc/mdstat > /dev/null ; then
       sudo grub-install /dev/sd*
       mdstat_done=true
    else
       sleep ${sleepSecs:-60}
    fi
done

您需要解释吗?

我希望这会有所帮助。