【bash】キー入力による処理の制御

bash,CODE

bashでキーの入力内容によって処理を制御する方法です。

記載内容 ①case文による制御
②if文による制御
③実行時刻による制御

①case文による制御

  • 3:終了 を選択するまで処理を繰り返します
#!/bin/bash
while :
do
    echo "処理番号を入力してください"
    echo "1:処理1"
    echo "2:処理2"
    echo "3:終了"
    read INPUT

    case "$INPUT" in
        "1" ) echo "処理1を実行します" ;;
        "2" ) echo "処理2を実行します" ;;
        "3" ) echo "終了します。"
        break ;;
    esac
done

exit 0

②if文による制御

  • 該当する処理が選択された場合実行します
  • 文字列の入力に対応するため -eq ではなく = を使って比較しています
  • 空白やNullには対応できていないので注意してください
#!/bin/bash
echo "処理番号を入力してください"
echo "1:処理1"
echo "2:処理2"
read INPUT

if [ ${INPUT} = 1 ]; then
    echo "処理1が選択されました"
elif [ ${INPUT} = 2 ]; then
    echo "処理2が選択されました"
else
    echo "該当する処理がありません"
fi

exit 0

③実行時刻による制御

  • こちらはキー入力ではなく設定した時間による処理制御です
  • 21時を過ぎているかどうかで処理を変えています
#!/bin/bash
declare -i TIME=`date +%k`
declare -i SETTIME=21

if [ ${TIME} -ge ${SETTIME} ]; then
    echo "${SETTIME}時を過ぎています"
else
    echo "${SETTIME}時を過ぎていません"
fi

exit 0

参考書

bash,CODE

Posted by junichi