0

シェルスクリプトを使用してファイルを読み取りたいのですが、ここではファイルの読み取りに必要な時間を計算したいと考えています。以下のメソッドを作成して、ファイルの読み取りの開始時と終了時にミリ秒単位の時間を取得し、時間差を計算しますが、時間 + 分 + 秒を追加して、必要な数値入力を示していません。

方法

  getCurrentTimeInMili()
   {
    hourTime=$(($(date +%H)*3600))
    minuteTime=$(($(date +%m)*60))
    secondTime=$(date +%S)
    timeInMili= $(($hourTime + $minuteTime + $secondTime));
    return timeInMili
   }

エラー ./testshell.sh: 17 行目: return: timeInMili: 数値引数が必要です

4

2 に答える 2

3

timeInMili=との間のスペースを省略します$

timeInMili= $(($hourTime + $minuteTime + $secondTime));
           ^
          This to

timeInMili=$(($hourTime + $minuteTime + $secondTime));
于 2012-05-24T15:34:41.417 に答える
1

複数回呼び出すdateということは、それらの戻り値が互いに少し同期していない可能性があることを意味します。これは、2 番目の境界の直前に呼び出された場合に問題になる可能性があります。次のように、date を 1 回だけ呼び出して、必要なすべての情報を取得することをお勧めします。

getCurrentTimeInMili() {
  date +'%H 3600 * %M 60 * + %S + 1000 * %N 1000000 / + p' | dc
}

startTime=$(getCurrentTimeInMili)
sleep 5
endTime=$(getCurrentTimeInMili)

これほどの精度が必要ない場合は、次のようにtimeビルトインを使用できます。

time sleep 5
于 2012-05-24T15:45:39.397 に答える