1. ホーム
  2. linux

[解決済み] 経過時間を計算するBashスクリプト

2022-05-14 02:46:17

質問

bashでコマンド実行時の経過時間を計算するスクリプトを書いているのですが、どうでしょうか。

STARTTIME=$(date +%s)
#command block that takes time to complete...
#........
ENDTIME=$(date +%s)
echo "It takes $($ENDTIME - $STARTTIME) seconds to complete this task..."

私のロジックは正しいのでしょうが、以下のようなプリントアウトになります。

"このタスクを完了するのに数秒かかります..."。

私の文字列評価に何か問題があるのでしょうか?

bashの変数は型付けされていないと思うのですが、それでもbashに"string to integer"のメソッドがあれば嬉しいのですが。

どのように解決するのですか?

どちらかというと $(()) または $[] は算術演算の結果を計算するために働きます。 あなたが使っている $() というのは、単に文字列を受け取って、それをコマンドとして評価するものです。 ちょっと微妙な違いですね。 お役に立てれば幸いです。

この回答のコメントでtinkさんが指摘されているように $[] は非推奨であり $(()) が推奨されるべきです。