LoginSignup
0
1

コードを最後まで終わらせるコード

Posted at

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 など)についての説明は割愛します、悪しからず。

内容に誤りがありましたらご指摘お願い致します。

0
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1