#!/bin/bash
#
# revision of factorial-2 to check for bad input
#

# get "is integer?" function
source $(dirname $0)/define-is-integer

factorial() {
    n=$1
    if [ $n -le 1 ]
    then
        echo 1
    else
        echo $(( $n * $(factorial $((n-1))) ))
    fi
}

# main script
if [ -z "$1" ]
then
    echo usage $(basename $0) n
    exit 1
fi
is-integer "$1"
if [ $? -ne 0 ]
then
    echo n must be non-negative integer
    exit 1
fi
if [ $1 -lt 0 ]
then
    echo n must be non-negative integer
    exit 1
fi

echo factorial of $1 is $(factorial $1)
