2017-05-28 5 views
1

最終的な目標は、動的な統計情報を持つウェブサイトを設定することです。 私は既にmysqlデータベースを作成し、私たちのminecraftサーバー上の既知のプレーヤーの総数を数えます。 次のステップは、すべてのプレイヤーのプレイ時間を完全に表示することです。時間の出力を検索して要約する

は、私はすべてのプレーヤーのための再生時間が表示されている「activetime.conf」を持っています。

activetime.conf:

config { 
    auto-save=300 
    default-range=5 
    max-range=10 
} 
players { 
    "111-111-1111-11-11" { 
     name=playerjack 
     time="2h13m25s" 
    } 
    222-2-22222-2-222 { 
     name=playergert 
     time="14m13s" 
    } 
} 

私が既に持っているもの:

players=$(ls -l /path | grep -v ^d | grep -v ^t | wc -l) 
mysql -u root -pmypass mydatabase -e "UPDATE mytable SET players = '$players';" 
hours_played=$(grep -E '"*h*m*s"' /path/activetime.conf) 
echo $hours_played 

私たちは、 "hours_played" 次の文字列を持っていると時間の情報のためにそれを検索したい+まとめ最終的にはフル時間だけを表示する時間。 hours_played

time="2h13m25s" time="14m13s" 

最終的な結果は次のようになります。

2 

結果は2であるのはなぜ?

#!/bin/bash 

active_time() { 

    regex='time.*\"(.+)h(.+)m(.+)s\"' 

    while read -r str; do 
    if [[ $str =~ $regex ]] ; then 
     h=$((h + BASH_REMATCH[1])) 
     m=$((m + BASH_REMATCH[2])) 
     s=$((s + BASH_REMATCH[3])) 
    fi 
    sub=$((m/60 )) 
    tot=$((h + sub)) 
    done<"/path/active_time.conf" 
    echo "${tot} total hours" 
} 

ので、代わりのあなただけ呼ぶようecho $hours_played最後の最後の行をエコー:あなたができる

2h13m25s + 14m13s = 2h27m38s (=2h) 
+3

コーディングの努力を示してください。 – Cyrus

+0

さらにいくつかの例を共有できますか? –

+0

私は自分の質問を編集して、目標と目的を示しました。 – realKSMC

答えて

2

ことの一つは、時間情報(時間、分、秒)を解析する機能を使用しています:関数を呼び出す

active_time 

は、時間と分を合計し、その例を示します。

time="8h13m25s" 
time="6h54m13s" 

なり出力:

15 total hours 

*秒を合計し、合計に追加するには、必要に応じて追加するOPのためのエクササイズとして省略されています。

+0

Uしました! Thx alot :)時間が来たら、秒に合計を加えようとします。 – realKSMC

+0

注意しなければならないことは、分/秒だけの時間に "0h"を置くことができれば、はるかにうまくいくということです。たとえば(0h25m35s)...そうでない場合、分と秒は1時間の値が表示されるまで無視されます。 –

関連する問題