シェルスクリプトで1文字だけ入力させる方法
キーボードで1文字だけ入力したら即座に入力を終了する方法。
方法
read
コマンドに-k
オプションをつける。
$ read -k 1
-k
オプションは入力文字数を指定できるオプション。これでEnterを押さなくても入力を受け付けることができる。
使用例
ユーザーにキー入力をさせて1クッションはさむ。
$ read -k 1 key"?Press any key to proceed: "
実行結果
Press any key to proceed:
応用例
10秒間だけキーボードからの入力を受け付ける。10秒以内に1文字でも入力されたら即時に終了する。
#!/bin/zsh local key='' local i echo "10秒だけ待ってやる。" # forとsleepを使って10秒待つ for ((i=10; i>0; --i)); do echo $i read -s -t -k 1 key && break sleep 1 done # 10秒後にキー入力がなかった場合 [[ -n $key ]] || echo "何か打てよ。"
参照
http://www.opensource.apple.com/source/zsh/zsh-30/zsh/Functions/Misc/zkbd