#!/usr/bin/env sh # YES_ZSH # YES_BASH # YES_DASH bak() { ### @- [ $# -gt 0 ] || { printf "%s\n" "$0: too few arguments" >&2; return 1; } local ret=0 for f; do if [ -e "$f.bak" ]; then bak "$f.bak" || ret=1 fi cp -p "$f" "$f.bak" || ret=1 done return $ret } [ "${SOURCING:-0}" -gt 0 ] || bak "$@"