#!/bin/sh # wait-for-multiple.sh (POSIX / sh version) set -e HOSTS="" CMD="" while [ $# -gt 0 ]; do case "$1" in --) shift CMD="$*" break ;; *) HOSTS="$HOSTS $1" shift ;; esac done if [ -z "$HOSTS" ]; then echo "Usage: $0 host1:port1 host2:port2 ... -- command args" exit 1 fi wait_host() { hostport="$1" /usr/bin/wait-for-it.sh "$hostport" --timeout=30 --strict } PIDS="" for h in $HOSTS; do wait_host "$h" & PIDS="$PIDS $!" done FAIL=0 for pid in $PIDS; do wait $pid || FAIL=1 done if [ $FAIL -ne 0 ]; then echo "One or more hosts failed to become available" exit 1 fi exec $CMD