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