share facebook facebook2 twitter menu hatena pocket slack

2016.11.28 MON

何かを入力するまで終了出来ない bash スクリプト(read を使った入力待ち)

川原 洋平

WRITTEN BY川原 洋平

どうも、星野源です。

サンプル

#!/usr/bin/env bash

oreno_input() {
  while true;do
    echo "何か入力して下さい"
      trap 'continue' 2
      read key
      case $key in
        [a-zA-Z]*)      # 英数字
          echo -e "$key"
          break
          ;;
        [^\x01-\x7E]*) # 2 バイト文字
          echo -e "$key"
          break
          ;;
      esac
  done
}

oreno_input

実行

bash-3.2$ ./sample.sh
何か入力して下さい

何か入力して下さい

何か入力して下さい

何か入力して下さい

Enter だけ叩いても永遠に「何か入力して下さい」が…

何か入力して下さい
^C^C^C^C^C^C^C
何か入力して下さい
^C^C^C^C
何か入力して下さい
^C^C^C^C
何か入力して下さい

Ctrl + c で抜けようとしてもダメよダメダメ。

何か入力して下さい
真田丸
真田丸
bash-3.2$

仕方無いので「真田丸」を入力したら抜け出すことが出来た。

なんで作ったの?

キーボードからの入力は read を使えば取得出来るけど、何かを入力するまでは入力は促したいという要件が自分の中で発生した為。
抜け道が無いか調査中。

元記事はこちら

何かを入力するまで終了出来ない bash スクリプト(read を使った入力待ち)