小文字から大文字へ変換する

#!/bin/sh
#lower.sh [filename]

INFILE="-"

#小文字を大文字に変換する関数
function tr_lower(){
    local LLINE="$1"
    local LTMP1=""
    local LTMP2=""
    local LTMP3=""
    local LNLIN=""

    LTMP3="$LLINE"
    LTMP2="${LTMP3#?}"
    LTMP3="$LLINE"
    LTMP1="${LTMP3%${LTMP2}}"

    while [ "" != "$LTMP1" ]; do
        case "$LTMP1" in
           A ) LTMP1="a" ;;
           B ) LTMP1="b" ;;
           C ) LTMP1="c" ;;
           D ) LTMP1="d" ;;
           E ) LTMP1="e" ;;
           F ) LTMP1="f" ;;
           G ) LTMP1="g" ;;
           H ) LTMP1="h" ;;
           I ) LTMP1="i" ;;
           J ) LTMP1="j" ;;
           K ) LTMP1="k" ;;
           L ) LTMP1="l" ;;
           M ) LTMP1="m" ;;
           N ) LTMP1="n" ;;
           O ) LTMP1="o" ;;
           P ) LTMP1="p" ;;
           Q ) LTMP1="q" ;;
           R ) LTMP1="r" ;;
           S ) LTMP1="s" ;;
           T ) LTMP1="t" ;;
           U ) LTMP1="u" ;;
           V ) LTMP1="v" ;;
           W ) LTMP1="w" ;;
           X ) LTMP1="x" ;;
           Y ) LTMP1="y" ;;
           Z ) LTMP1="z" ;;
        esac

        LLINE="$LTMP2"
        LNLIN="$LNLIN$LTMP1"
        LTMP3="$LLINE"
        LTMP2="${LTMP3#?}"
        LTMP3="$LLINE"
        LTMP1="${LTMP3%${LTMP2}}"
    done
    echo "$LNLIN"
}

#処理するファイル名のオプション処理
if [ $# -eq 0 ]; then
    INFILE=""
elif [ $# -eq 1 ]; then
    if [ "\-" = "$1" ]; then
        INFILE=""
    else
        INFILE="$1"
        if [ ! "(" -f $INFILE ")" ]; then
            echo "ファイルが読めません" 1>&2
            exit -1
        fi
    fi
else
    echo "オプションが多いです" 1>&2
    exit -1
fi

#メイン処理
if [ "" = "$INFILE" ]; then
    while read line ; do
        tr_lower "$line"
    done
else
    while read line ; do
        tr_lower "$line"
    done < "$INFILE"
fi