LoginSignup
2
3

More than 5 years have passed since last update.

Bash キーボードから文字列を受け取り、確認するシェル関数

Posted at

Bash でツールを作成する際、良く直面するキーボード入力処理を再利用できる様にメモの替わりです。
キーボードからの入力を受け付けて、表示して確認をする、間違っていれば、再入力のチャンスを与える Bashシェル関数です。

入力受取りと確認のシェル関数

bash
#!/bin/bash                                                                                                          
#                                                                                                                    
# 文字列のインプットを受け取りと確認の関数                                                                           
#                                                                                                                    

function confirmation() {
    MSG="Yes または No をインプットしてください? [yes/no] : "
    echo -n $MSG

    while read response; do
        case $response in
            'yes' | 'Yes' | 'y' | 'Y' )
                echo "受け付けました。"
                return 1 ;;
            'no' | 'No' | 'n' | 'N' )
                echo "もう一度おねがいます。"
                return 0 ;;
            *)
                echo "yes/no y/n で、もう一度おねがします。"
                echo -n $MSG
        esac
    done
}

function keyboard_input() {
    while true
    do
        echo -n $1 " "
        read input_data
        echo $input_data " で良いですか?"
        confirmation
        if [ $? -eq 1 ]; then
            RESULT=$input_data
            return 0
        elif [ $? -eq 0 ]; then
            continue;
        fi
    done

}

#                                                                                                                    
# メインの処理                                                                                                       
#                                                                                                                    
keyboard_input "データをインプットしてください : "
if [ $? -eq 0 ]; then
    echo "RESULT = " $RESULT
fi

実行結果

$ ./t4_input
データをインプットしてください :  ブルーミックス
ブルーミックス  で良いですか?
Yes または No をインプットしてください? [yes/no] :n
もう一度おねがいます。
データをインプットしてください :  Bluemix
Bluemix  で良いですか?
Yes または No をインプットしてください? [yes/no] :yes
受け付けました。
RESULT =  Bluemix
2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3