#!/bin/sh set -eu usage() { cat <<-'EOF' Usage: forever -- COMMAND... forever -h EOF } help() { cat <<-'EOF' Options: -h, --help show this message Run COMMAND forever. Examples: Print 123 forever: $ forever echo 123 EOF } for flag in "$@"; do case "$flag" in --) break ;; --help) usage help exit ;; *) ;; esac done while getopts 'h' flag; do case "$flag" in h) usage help exit ;; *) usage >&2 exit 2 ;; esac done shift $((OPTIND - 1)) eval "$(assert-arg "${1:-}" 'COMMAND')" while true; do STATUS=0 "$@" || STATUS=$? printf 'Exitted with code %s.\n' "$STATUS" >&2 done