What shell are you using? Have you got a set -u somewhere in play? Try this:
set -u
if [ "${1:-}" = "" ]; then log "Usage: $0 program [args]" exit 1 fi
OR:
if [ $# -eq 0 ]; then log "Usage: $0 program [args]" exit 1 fi