これはかなり古い質問ですが、これは何かを実行するのにかかった時間を知りたい/必要なときに、これを行う方法です。
Bashには、名前付きの内部変数の形式で組み込みの秒タイマーがありますSECONDS(他の内部変数についてはこちらをご覧ください)。
SECONDS=0実行時間をチェックするものの前に置きます。適切な結果を得るには、ユーザー入力の後に入力する必要があります。したがって、情報の入力を求める場合は、プロンプトの後に入力してください。
次に、これをチェック対象の最後に配置します。
if (( $SECONDS > 3600 )) ; then
let "hours=SECONDS/3600"
let "minutes=(SECONDS%3600)/60"
let "seconds=(SECONDS%3600)%60"
echo "Completed in $hours hour(s), $minutes minute(s) and $seconds second(s)"
elif (( $SECONDS > 60 )) ; then
let "minutes=(SECONDS%3600)/60"
let "seconds=(SECONDS%3600)%60"
echo "Completed in $minutes minute(s) and $seconds second(s)"
else
echo "Completed in $SECONDS seconds"
fi
秒単位の時間だけを知りたい場合は、上記を単純化して次のことができます。
echo "Completed in $SECONDS seconds"
例として:
read -rp "What's your name? " "name"
SECONDS=0
echo "Hello, $name"
if (( $SECONDS > 3600 )) ; then
let "hours=SECONDS/3600"
let "minutes=(SECONDS%3600)/60"
let "seconds=(SECONDS%3600)%60"
echo "Completed in $hours hour(s), $minutes minute(s) and $seconds second(s)"
elif (( $SECONDS > 60 )) ; then
let "minutes=(SECONDS%3600)/60"
let "seconds=(SECONDS%3600)%60"
echo "Completed in $minutes minute(s) and $seconds second(s)"
else
echo "Completed in $SECONDS seconds"
fi
timeコマンド(time ./script.sh)を使用し、現在の時間を出力するにはdateコマンドを使用します。