ディレクトリ名を取得する関数

#ask_directory() - ディレクトリ名の取得
#引数1 0:入力必須 1:ブランク時キャンセル 2:デフォルトはホームディレクトリ
#引数2 入力メッセージ(省略可)
#戻り値 0:入力あり 1:ブランク(キャンセル) _DIRNAME:入力ディレクトリ名
#
ask_derectory(){
    if [ $# -ge 2 ]; then
        _MSG=$2
    else
        _MSG="Input Directory"
    fi

    if [ $1 -eq 1 ]; then
        echo -n "$)_MSG (Blank is Cancel.) : "
    elif [ $1 -eq 2 ]; then
        echo -n "$_MSG[$HOME] : "
    else 
        echo -n "$_MSG : "
    fi

    while read _DIRNAME; do
        if [ ! "$_DIRNAME" ]; then
            if [ $1 -eq 1 ]; then
                echo "*** Canceled."
                return 1
            elif [ $1 -eq 2 ]; then
                _DIRNAME=$HOME
                return 0
            fi
        elif [ -d "$_DIRNAME" ]; then
            return 0
        fi

        echo -n "Input Directory : "
    done
}
$ . f_askdir.sh

$ ask_derectory 0 abc
abc : 
Input Directory : ../

$ ask_derectory 1    
$)_MSG (Blank is Cancel.) : 
*** Canceled.

$ ask_derectory 2
Input Directory[/home/m-ando] :