本を読む

読書やコンピュータなどに関するメモ

どう書く?org:制限時間内のキー入力検査

 出力例のあたりがよく理解できてないのだけど、こんな感じだろうか。すべてbash内蔵コマンドで。

 1文字目をreadしたあと、残りの文字をreadで読んで、その時間を計測している。面倒だったのは、readにtimeをかませて結果を変数に入れる方法。

#!/bin/bash

function InputChecker(){
    local timeout=$1
    local str=$2

    echo -n "input($str) =>"
    read -n1 c
    TIMEFORMAT='%R' r=$((time read s; echo $s) 2>&1)
    t=${r%%.*}
    s="$(echo $r)"  # newline -> whitespace
    s=${s#* }

    echo -n 'result => '
    if (( $t >= $timeout )) ; then
        echo 'TIME OUT'
    elif [ "$c$s" == "$str" ] ; then
        echo 'OK'
    else
        echo 'NG'
    fi
}

InputChecker 5 'ABCDEF'
InputChecker 5 'ABCDEF'
InputChecker 5 'ABCDEF'

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://emasaka.blog65.fc2.com/tb.php/298-7dd7f839

続・どう書く?org:制限時間内のキー入力検査

 「どう書く?org:制限時間内のキー入力検査」の続き。 「ゲームで極める シェルスクリプトスーパーテクニック」を読んで、bashのSECONDS変数を知った。なんだ、もっと簡単に書けるんじゃん。さっそく書き直してみ

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad