如何循环bash
命令直到输出不再包含字符串,然后打印循环停止输出的时间?watch
命令不可用。
答案1
下面是一个运行的示例date +%S
,它每半秒打印一次当前时间的秒数部分,并在满足某个条件时停止(见下文):
while true; do
str=`date +%S`
echo Output: $str
# Use the below when you want the output not to contain some string
if [[ ! $str =~ 5 ]]; then
# Use the below when you want the output to contain some string
# if [[ $str =~ 7 ]]; then
break
fi
sleep .5
done
echo Finished: `date`
条件停止:
如果仅取消注释此行:
if [[ ! $str =~ 5 ]]; then
它会
5
在输出中存在时循环(例如 while from50
till00
)如果仅取消注释此行:
if [[ $str =~ 7 ]]; then
它将循环直到
7
输出中存在(即直到当前秒数 = 07、17、27、37、47 或 57)
不包含字符串的示例输出(5
在本例中):
Output: 56
Output: 57
Output: 57
Output: 58
Output: 58
Output: 59
Output: 59
Output: 00
Finished: Thu Mar 1 20:16:00 EST 2012
包含字符串的示例输出(7
在本例中):
Output: 08
Output: 09
Output: 09
Output: 10
Output: 10
Output: 11
Output: 11
Output: 12
Output: 12
Output: 13
Output: 13
Output: 14
Output: 14
Output: 15
Output: 15
Output: 16
Output: 16
Output: 17
Finished: Thu Mar 1 19:58:17 EST 2012