回数無制限のリトライ
参考にしたサイトはコチラ.素晴らしい情報をありがとう!
$ until COMMAND;do sleep 1;done
ここの COMMAND という箇所に実行したいコマンドを書くだけ!失敗したらその1秒後にコマンドを再実行します.簡単でしょ!
回数制限付きのリトライ
$ for i in {1..10};do COMMAND&&break;sleep 1;done
for 文を使って,この書き方なら10回までリトライする.こっちは実はまだ試してないんだけど,きっと動くでしょう.
何に使ったの?
僕は kotoriotoko というシェルスクリプトライブラリを使ってるんだけど,これの動画アップロード機能がときどき失敗する.ときどきというか,10回に1回の割合で必ず失敗してるような印象.もちろんランダムさは少しあるけど,本当に100回実行したら,必ず10回は失敗してる感じがする.
これをたくさんアップロードしたいときに,失敗されるとその後の作業が混乱するから困るんだよね.だから失敗してもいいから,失敗したらリトライしてほしかった.そのためにシェルスクリプトのリトライの作り方を調べたのでした.
まぁ見ても面白くないけど,リトライ処理を含めた動画アップロードのスクリプトの実行シーンを撮影してツイートしたんでした.Ubuntu の端末アプリを全画面にするとカッコイイね!

