回答:
bash
変数を見てみましょうSECONDS
:
SECONDS:このパラメーターが参照されるたびに、シェルの呼び出しからの秒数が返されます。値がSECONDSに割り当てられている場合、以降の参照で返される値は、割り当て以降の秒数と割り当てられた値です。
したがって、この変数をスクリプトの最後に出力するだけです。または、プログラムの一部のみの時間を測定する場合は、測定さSECONDS=0
れたコマンドブロックの先頭に設定し、最後にこの変数に格納されている値を使用します。
SECONDS=0
あるスクリプトを別のスクリプトで同じように設定すると、それらは互いに干渉しますか?
START_TIME=$SECONDS; dosomething; ELAPSED_TIME=$(($SECONDS - $START_TIME))
。同時に使用する場合は、これは少し柔軟に見えます。
コマンドのプレフィックスを付ける/usr/bin/time
と、timeコマンドがスクリプトの実行にかかった時間を出力します。これは、bash
特定のものを使用するよりも移植性があります。
スクリプトをネストします。メールを送信するには、いくつかのオプションがあります。私は個人的にはmsmtpを好みます。自分で「ここ」のスタイル(インライン)でヘッダーを定義するか、別のファイルを使用してそれらをまとめることができます。これには、perl、pythonなど、あらゆる種類の代替手段があります。
Reply-To: someone@somehost
Sender: someone <someone@somehost>
To: somebody@somewhere.else
Subject: some subject
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: text/html; charset="iso-8859-1"
末尾の空白行は重要です。組み立てられたメッセージをmsmtpにcatします。
cat assembled.eml | msmtp somebody@somewhere.else
悲観論者は合理的な回数成功するまでループします。
ペイロードはhtmlにすることも、phpで生成することもできます。
夜間の「バッチリ」操作の非常に醜い代替手段は、cronジョブを作成することであり、出力はstdout / stderrの代わりに電子メールで送信されます。
$SECONDS
。それは素晴らしいことです!これに追加するには、次のような形式で秒を時間:分:秒に変換できますdate -d "1970-01-01 ${SECONDS} sec" +'%k:%M:%S'
(man date
より多くのフォーマットオプションについてはを参照してください)。