#!/bin/sh # Print a random line from input td= cleanup() { rm -fr -- "$td" } for sig in EXIT HUP INT TERM ; do trap cleanup "$sig" done if [ "$#" -eq 0 ] ; then td=$(mktd rndl) || exit set -- "$td"/stdin cat >"$td"/stdin fi lc=$(sed -- '$=;d' "$@") || exit ri=$(rndi 1 "$lc") || exit sed -- "$ri"'!d' "$@"