私はいくつかのデータを移行するためのプログラムを実行するbashスクリプトを持っています。これは時間の約30-40%で失敗します。特定のエラーをキャッチしてスクリプトを再試行しますか? - BASH
この特定のエラーが発生したときにスクリプトを再試行する方法が必要ですが、失敗する前に3回試してみたいです。
それが失敗した場合、スクリプトは以下を出力します
Error: The connection to the remote server has timed out, no changes have been committed. (#134 - scope: ajax_verify_connection_to_remote_site)
編集:。具体的には....
migration.sh:
#!/bin/bash
various other scripts........
sudo a_broken_migration_program <Variables>
私はそれが失敗した場合にのみ、理想的には、broken_migrationを数回再試行したいですこの特定のエラーが発生しますが、それが複雑すぎる場合は、すべてのエラーを再試行して解決します。これを行うには
私の頭の上から離れて、主な移行ロジックをスクリプト内のbash関数に配置することをお勧めします。この関数は実際の移行プロセスの終了コードを返すことができます。また、関数の呼び出しを再試行するために、3つの制限付き単純ループを作成することができます。 – Lix
"この特定のエラーが発生したときに再試行します"。他のエラーが表示されたら、引き続きお気軽にご連絡ください。 '$?'に格納されているシェルの戻りコードについて知っていますか?OKの場合は0、何らかのエラーがあった場合はゼロ以外の数字です。すべての良いコマンドはこの慣例を尊重すべきです。つまり、このQは掲示板ではありません。多くの人が投票に投票します。私たちはいくつかのコードを見る必要があり、問題をより具体的かつテスト可能にしています。がんばろう。 – shellter
@shellter:非常に一般的なこの特定のエラーを除いて、すべてのエラーを停止したいと思います。なんらかの理由でこの移行ツールは非常に頻繁に失敗しますが、2回目または3回目には完全に完了します。 広すぎるとして、私はどのように具体化できるか分かりません..... 私はプログラムをシェルスクリプトから実行しています。私はこの特定のエラーをキャッチして、再試行したい。私はそれを明確にするために私のポストを更新します.... – James