1

以下のコードをスクリプトに追加したいのですが、正しく表示されていますが、total_time値が表示されていません。CurrentTimeこれで、エポック時間を現在のシステム時間に変更し、それに 20 分を追加します。

CurrentTime=`date -d @$2`
echo "CurrentTime : $CurrentTime " >> ${LOGFILE}
Total_time=`"$CurrentTime" -d "+20 min"`

どうすればいいですか?

4

2 に答える 2

0

これが機能しない理由は、値を に割り当てようとしている時点$Total_timeで、$CurrentTime変数がすでに時刻に設定されているためです。これはもはやコマンドではなく、コマンドの結果である文字列です。

新しい日付を計算するたびに、`date`コマンドを新たに呼び出す必要があります。それがグルの答えがあなたに提供するものですが、彼は理由を説明しませんでした.

修飾子を適用する「基準」日付を作成する必要がある場合でも、これを行うことができますが、少し異なる表記法をお勧めします。

#!/bin/bash

start=$(date '+%s')

# do stuff
sleep 20

duration=$((`date '+%s'` - $start))

その後、他の計算の簡単$durationな基礎として使用できます。また、相対日付で使用できます。

printf "[%s] Start of job\n" "$(date -d @$start '+%Y-%m-%d %T')"
...
printf "[%s] End of job\n" "$(date -d @"$((start + duration))" '+%Y-%m-%d %T')"

dateのデフォルトよりも標準的な形式でログ ファイルをフォーマットすることをお勧めします。

于 2012-12-04T02:50:00.743 に答える
0

totaltime の割り当てを次のように変更します。

Total_time=`date -d "$CurrentTime +20 mins"`
于 2012-12-04T01:47:13.390 に答える