「time」以降のコマンドが成功した場合にのみ「time」の出力を表示

「time」以降のコマンドが成功した場合にのみ「time」の出力を表示

timetime渡されたコマンドが成功した場合にのみ、コマンドの出力が表示されます。このような:

( time wget -pq --delete-after https://www.example.com ) 2>&1 || echo fail

問題は、wget失敗してもまだ出力を受け取ることですtime(コマンドが失敗するのにかかる時間を測定するので論理的です)。私の目標は、出力を変数に保存するか、または私の変数に含めることです0m0.100sfail私はどのようにこれをまともな方法で行うことができるかを知っている人はいますか?

ベストアンサー1

次のことができます。

$ if var=$( { time true; } 2>&1 ); then echo "$var"; else echo fail; fi

real    0m0.000s
user    0m0.000s
sys 0m0.000s

$ if var=$( { time false; } 2>&1 ); then echo "$var"; else echo fail; fi
fail

おすすめ記事