#!/bin/sh set -eu usage() { cat <<-'EOF' Usage: dice [SIZE] dice -h EOF } help() { cat <<-'EOF' Options: -h, --help show this message SIZE the size of the dice (default: 6) Roll a dice of SIZE. Caveat: rolling a dice more than once in the same second will give you the same number. Examples: Roll a dice of size 6: $ dice 3 Roll a D20: $ dice 20 15 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)) SIZE="${1:-6}" RAND="$(awk 'BEGIN { srand(); print int(rand()*32768) }' /dev/null)" echo $(((RAND % SIZE) + 1))