2012-05-02 19 views
2

私はこの1つで私の髪を引っ張ってきました。私はbashスクリプティングとLinux大学のクラスを取ることに新しいです。これは任務の要件ではなく、単に個人的な開発です。LinuxのBashスクリプト - 他のタスクを実行中にコンソールでストップウォッチを実行したい

ユーザーの入力やその他の作業中に、ストップウォッチをコンソールで実行しようとしています。

私は何時間もこの質問を調査しました。私はちょうど間違ったクエリで検索していると思います。

私はハングマンゲームを作成しました(ここでは、人がぶら下がる前に単語の文字を推測しています)。

これは素晴らしい学習体験でした。今、私はどれくらいの時間が経過したかを示す時計を持っています。

関連するチュートリアルへのアドバイスやリンクがあれば幸いです。

これまでのテストコードは動作しませんが、タイマーのループは無限になります。

#!/bin/bash 
# timer.sh 

timer() 
{ 
    while true 
    do 
    tput cup 0 0 
    echo $SECONDS 
    wait 1 
    done 
} 

display() 
{ 
    tput cup 5 0 
    echo -n "This is output from other stuff" 
    read -n1 letter 
    #while read -n1 letter 
    #do 
    tput cup 7 0 

    echo -n "type any letter" 
    tput cup 9 0 
    echo -n "You letter is: $letter" 
    if [[ "$letter" == "x" ]] 
    then 
     exit 
    fi 
    #done 
} 

finished() 
{ 
    tput clear 
    echo -n "This is the end of the program" 
    kill $timer_pid 
    exit 
} 

# Main Body 

trap finished SIGINT SIGTERM 
tput clear 
while true 
do 
    timer & 
    timer_pid=$! 
    display 
done 

exit 
+1

ここでは、S.O. bashストップウォッチのための;それらを検索してみてください。がんばろう。 – shellter

+0

ヘイシェルター、私は私のポストで私が多くの時間を費やしたと指摘した。そう。この問題に関して私が出会った投稿は私の質問に答えなかった。デニスが指摘したように、結局、1を寝るのを待つだけでした。 – subcan

+0

私があなたに読んでくれなかったことを謝罪しました。私はあなたのための簡単な解決があったことをうれしく思っています。あなたの将来の努力に幸運。 – shellter

答えて

2

wait 1sleep 1に変更してみてください。

+0

デニスありがとうございます。それが問題だったのは夢中です。私はまた、 'timer&'と 'timer_pid = $!' whileループから外して、より多くのシェルを継続的に産み出さないようにします。これは基本原則に基づく基本的なスクリプトです。もう少し効率的なやり方を学ぶことになります。再度、感謝します。 – subcan

0

あなたがシェルスクリプトに精通しているので、私は基本的なロジックを提供しています。さらに、より多くのコードを読んだり読んだりするほど、より多くのことを学ぶことができます。

​​
0
#!/bin/bash 
# 
# display time at line begin. 
# 
tick() { 
    t=$(date +%T) 
    echo -en "\r$t > " 
    sleep 10 
    tick 
} 
tick 

あなたは./tick.sh &でスクリプトとしてこれを呼び出すと、それは常に行の先頭に時間が印刷されますが、それはあなた自身の入力を邪魔します。

時間をプロンプトに組み込むことができます(man:bash/PROMPTINGを参照してください)が、時間を実現するわけではなく、挿入するすべてのコマンドの後に新しい時間を表示するだけです。

関連する問題