#!/bin/bash # # Wait until a given file appears # # Params: # $1 - filename # $2 - maximum time to wait in seconds, default is 5 seconds if [[ $# -lt 1 || $# -gt 2 ]] then echo "invalid arguments" exit 1 fi secs=$2 [ ! $secs ] && secs=5 let steps=$secs*10 for i in `seq 1 $steps` do # -f does not work for special files (e.g. UNIX domain sockets), use ls # instead ls $1 >/dev/null 2>&1 [ $? -eq 0 ] && exit 0 sleep 0.1 done echo "File '$1' not available after $secs second(s)" exit 1