diff --git a/uwatch b/uwatch index ad6ad06..43e08ac 100755 --- a/uwatch +++ b/uwatch @@ -18,6 +18,10 @@ OPTIONS Afficher un décompte depuis DURATION jusqu'à 0 puis terminer le script. DURATION exprimé en secondes est le premier argument du script et vaut par défaut ${DEFAULT_DURATION} soit $(($DEFAULT_DURATION / 60)) minutes. + -f, --wfile FILE + Arrêter dès que le fichier FILE n'existe plus + -p, --wpid PID + Arrêter dès que la processus PID n'existe plus -u, --units Avec l'option --count, afficher l'unité: sec., min. ou heures -o, --offset NBSEC @@ -42,6 +46,8 @@ DEFAULT_STEP=1 DEFAULT_DURATION=300 what=time +wfile= +wpid= units= offset= step= @@ -52,6 +58,8 @@ args=( -t,--time what=time -c,--count what=count -r,--rcount what=rcount + -f:,--wfile: wfile= + -p:,--wpid: wpid= -u,--units units=1 -o:,--offset: offset= -s:,--step: step= @@ -112,5 +120,13 @@ while true; do msg="$msg (jusqu'à $until)" esac echo -n $'\e[1G\e[K'"$prefix$msg$suffix" + if [ -n "$wfile" -a ! -f "$wfile" ]; then + echo + break + fi + if [ -n "$wpid" ] && ! kill -0 "$wpid" 2>/dev/null; then + echo + break + fi sleep "$step" done