在Bash脚本中“等待”的最佳方法是什么,直到命令的结果包含特定模式?
我编写了一个简单的脚本来修复RAID阵列,现在我希望脚本等到命令cat /proc/mdstat
报告阵列的重建完成。我想等一下,因为之后我需要通过sudo grub-install /dev/sd*
答案 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
您需要解释吗?
我希望这会有所帮助。