テキストファイルを一定のサイズに分割する

#!/bin/sh
#splitter.sh -N [filename] N 分割する個数(1 < N < 個数)

SPLIT=0
INFILE=""
TMPDIR="/tmp"
TMPFILE="splitter.sh"

CAT="/bin/cat"
TOUCH="/bin/touch"
WC="/usr/bin/wc"
RM="/bin/rm"

#オプションの処理
if [ 0 -lt $# ]; then
    OPTTMP1="$1"
    OPTTMP2="${OPTTMP1:0:1}"
    OPTTMP1="$1"
    OPTTMP3="${OPTTMP1#${OPTTMP2}}"

    if [ "-" != "$OPTTMP2" ]; then
        echo "オプションの1つ目は-で始まって分割する数値を指定してください"\        1>&2
        exit -1
    else
        if [ 1 -lt "$OPTTMP3" ]; then
            SPLIT="$OPTTMP3"
        else
            echo "オプションの1つ目は-で始めって分割する数値を指定して下さい" 1>&2
            exit -1
        fi
        shift 1
        if [ 0 -lt $# ]; then
            INFILE="$1"
        elif [ 1 -lt $# ]; then
            echo "オプションが多いです" 1>&2
            exit -1
        fi
    fi
else
    echo "オプションが多いです" 1>&2
    exit -1
fi

#メイン処理
if [ "" = "$INFILE" ]; then
    DATETIME=$(LANG=C;$DATE "%Y-%m-%d-%X")
    TMPDIRFILE="$TMPDIR/$TMPFILE.$DATETIME"
    INFILE="$TMPDIRFILE"

    IFS=""
    while read line; do
        echo "$line" >> "$INFILE"
    done
    OUTFILE="$TMPFILE.$DATETIME"
else
    TMPDIRFILE=""
    OUTFILE="$INFILE"
fi

if [ -f "$INFILE" ]; then
    LINES="$($CAT $INFILE | $WC -l)"
    LINES="${LINES// }"

    if [ $LINES -lt $SPLIT ]; then
        echo "本文の行数より分割数が大きいです" 1>&2
        exit -1
    else
        LPF=$(( LINES / SPLIT ))
        i=0
        while read line; do
            if [ "(" 0 -eq $(( i % LPF )) ")" -a \
                "(" $i -lt $(( SPLIT * LPF )) ")" ]; then
                file="$(printf "%s.%04d" $OUTFILE $(( i / LPF )))"
                $($TOUCH "$file")
            fi
            echo "$line" >> "$file"
            let "i++"
        done < "$INFILE"
    fi
fi

if [ -f "$TMPDIRFILE" ];  then
    $($RM "$TMPDIRFILE")
fi