File: condwait

package info (click to toggle)
trafficserver 9.2.5%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 53,008 kB
  • sloc: cpp: 345,484; ansic: 31,134; python: 24,200; sh: 7,271; makefile: 3,045; perl: 2,261; java: 277; pascal: 119; sql: 94; xml: 2
file content (74 lines) | stat: -rwxr-xr-x 2,229 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/bin/bash

#  Licensed to the Apache Software Foundation (ASF) under one
#  or more contributor license agreements.  See the NOTICE file
#  distributed with this work for additional information
#  regarding copyright ownership.  The ASF licenses this file
#  to you under the Apache License, Version 2.0 (the
#  "License"); you may not use this file except in compliance
#  with the License.  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.

# A bash script to wait for a condition to be true.
#
# usage:
#  condwait [ MAX-WAIT [ POST-WAIT ] ] CONDITION
#
# CONDITION is the ('test' command) condition to wait for.  (It may contain white space.)
#
# MAX-WAIT is the maximum number of seconds to wait for the condition.  If it is omitted, it defaults to 60.
#
# POST-WAIT is the number of seconds to wait after the condition is true.  If it is omitted, it defaults to 0.
#
# The script exits with status 0 when the condition is seen to be true.  It exits with status 1 if the condition
# is not seen to be true and the maximum wait has expired.

WAIT=60
POST_WAIT=0

if [[ "$1" = "" ]] ; then
    echo "usage: condwait [ MAX-WAIT [ POST-WAIT ] ] TEST-CONDTION" >&2
    exit 1
fi

X=$( echo "$1" | sed 's/x/yy/g' | sed 's/[^0-9]/x/g' )
if [[ "$X" = "$1" ]] ; then
    WAIT=$1
    shift
    if [[ "$1" = "" ]] ; then
        echo "usage: condwait [ MAX-WAIT [ POST-WAIT ] ] TEST-CONDTION" >&2
        exit 1
    fi
    X=$( echo "$1" | sed 's/x/yy/g' | sed 's/[^0-9]/x/g' )
    if [[ "$X" = "$1" ]] ; then
        POST_WAIT=$1
        shift
    fi
fi

if [[ "$1" = "" ]] ; then
    echo "usage: condwait [ MAX-WAIT [ POST-WAIT ] ] TEST-CONDTION" >&2
    exit 1
fi

while (( WAIT > 0 ))
do
    if test $*
    then
        if (( POST_WAIT > 0 ))
        then
            sleep $POST_WAIT
        fi
        exit 0
    fi
    sleep 1
    let WAIT=WAIT-1
done
exit 1