brew upgrade
のダウンロードが途中で終了する
外出する直前にbrew upgrade
を走らせて家を出て、帰ってきたらターミナルプロンプトにエラーが表示されていてダウンロードが途中までしか終わっていなかったということが時々あります。 (ネットワークが貧弱なのでしょうか笑)
これを回避するためにコマンドが無事終了するまで粘り強く実行し続けるコードが欲しいなということで備忘録です。
false; while [ $? = 1 ]; do "$@"; done
$?
は直前に実行されたコマンドの終了ステータス、$@
は全ての引数の意味ですので、例えば引数がbrew upgrade foobar
であった場合、途中でそのダウンロードが失敗すると$?
は1となり、同じコマンドが続けて実行されて、ダウンロードが成功するまで終了しないという訳です。
(最初にfalse
を実行するのは、繰り返しが始まる直前の$?
はほとんどの場合0だからです。exit 1
でもいいと思います。)
これを例えば~/.zsh/functions/greedy
として関数登録しておけば
$ greedy brew upgrade foobar
を実行して安心して外出できます。
※関数の登録方法($FPATH
, autoload
など)についての説明は割愛します、悪しからず。
内容に誤りがありましたらご指摘お願い致します。