#!/usr/bin/env bash MUSTBETRUE=y unset MUSTBEFALSE count=1 for i in $@; do count=$(printf "%s + 1\n" "$count" | bc) [ -n "$BUFFERREAD" ] && BUFFERTIME="$i" && unset BUFFERREAD && continue case "$i" in "-t") MUSTBETRUE=y unset MUSTBEFALSE ;; "-f") MUSTBEFALSE=y unset MUSTBETRUE ;; "-c") break 2 ;; "-b") BUFFERREAD="y" ;; "-*") printf "Unsupported argument. Please use -t if exit on true, and -f if exit on false.\n" exit 1 esac done if [ $# -ge $count ]; then COMMAND="${@:$count}" else printf "No command given!\n" && exit 1 fi while true; do if [ "$MUSTBEFALSE" ]; then $COMMAND || exit 0 else $COMMAND && exit 0 fi sleep "${BUFFERTIME:-1}" done