以下のコードをスクリプトに追加したいのですが、正しく表示されていますが、total_time
値が表示されていません。CurrentTime
これで、エポック時間を現在のシステム時間に変更し、それに 20 分を追加します。
CurrentTime=`date -d @$2`
echo "CurrentTime : $CurrentTime " >> ${LOGFILE}
Total_time=`"$CurrentTime" -d "+20 min"`
どうすればいいですか?
以下のコードをスクリプトに追加したいのですが、正しく表示されていますが、total_time
値が表示されていません。CurrentTime
これで、エポック時間を現在のシステム時間に変更し、それに 20 分を追加します。
CurrentTime=`date -d @$2`
echo "CurrentTime : $CurrentTime " >> ${LOGFILE}
Total_time=`"$CurrentTime" -d "+20 min"`
どうすればいいですか?
これが機能しない理由は、値を に割り当てようとしている時点$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
のデフォルトよりも標準的な形式でログ ファイルをフォーマットすることをお勧めします。
totaltime の割り当てを次のように変更します。
Total_time=`date -d "$CurrentTime +20 mins"`