[解決済み] シェルスクリプトの特定のエラーを無視する
質問
私は、多くのエラーをスローする可能性のあるシェル スクリプトの小さなスニペットを使用しています。私は現在、すべてのエラーでグローバルに停止するようにスクリプトを設定しています。しかし、私はこの小さなサブセクションがわずかに異なることを望んでいます。
ここにスニペットがあります。
recover database using backup controlfile until cancel || true;
auto
私は、これが最終的に "file not found" エラーを投げることを期待しています。しかし、私はこのエラーで実行を続けたいと思います。他のエラーの場合は、スクリプトを停止させたいと思います。
これを達成するための最良の方法は何でしょうか?
Bash バージョン 3.00.16
どのように解決するのですか?
特定のコマンドのエラーを無視するようにするには、次のようにします。
some-arbitrary-command || true
こうすると、スクリプトが継続される。 例えば、以下のようなスクリプトがあった場合。
$ cat foo
set -e
echo 1
some-arbitrary-command || true
echo 2
実行すると返ってくるのは
$ bash foo
1
z: line 3: some-arbitrary-command: command not found
2
がない場合は
|| true
がなければ、コマンドラインで生成されていたはずです。
$ bash foo
1
z: line 3: some-arbitrary-command: command not found
引用元 マニュアル :
失敗したコマンドが直後のコマンドリストの一部である場合、シェルは終了しません。 の直後のコマンドリストの一部である場合、シェルは終了しません。
while
またはuntil
キーワードの一部である でのテストはif
ステートメントで実行されるコマンドの一部であり&&
または||
のリストは、最後の&&
または||
である場合、パイプラインの最後のコマンドを除くすべてのコマンド または、コマンドのリターンステータスが で反転している場合!
. のトラップはERR
に対するトラップは、設定されている場合、シェルが終了する前に実行されます。 が終了する前に実行されます。
編集: 実行を継続するように動作を変更するために
の場合のみ
を実行する
some-arbitrary-command
返された
file not found
をエラーの一部として言うことができます。
[[ $(some-arbitrary-command 2>&1) =~ "file not found" ]]
例として、次のように実行します(ファイル名が
MissingFile.txt
という名前のファイルは存在しません)。
$ cat foo
#!/bin/bash
set -u
set -e
foo() {
rm MissingFile.txt
}
echo 1
[[ $(foo 2>&1) =~ "No such file" ]]
echo 2
$(foo)
echo 3
これは以下のような出力を生成します。
$ bash foo
1
2
rm: cannot remove `MissingFile.txt': No such file or directory
なお
echo 2
は実行されましたが
echo 3
は実行されませんでした。
関連
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] シェルで、「2>&1」はどういう意味ですか?
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] PHPのエラーを表示させるにはどうしたらいいですか?
-
[解決済み] LinuxのシェルスクリプトでYes/No/Cancelの入力を促すにはどうしたらいいですか?
-
[解決済み] Bashシェルスクリプトの入力引数の存在確認
-
[解決済み] シェルスクリプトでYYYY-MM-DD形式の日付にする
-
[解決済み] シェルスクリプトで部分文字列を別の文字列に置き換える
-
[解決済み] Bashでファイルの内容を既存ファイルの末尾に追加する [重複]。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Bashスクリプトでエラーを発生させる
-
[解決済み] 現在の日付と時刻を句読点を使わずに表示する
-
[解決済み] Bashでユーザの入力を変数に読み込むには?
-
[解決済み] すべてのファイルに再帰的にファイル拡張子を追加する
-
[解決済み] MSYSでフォルダを閲覧する
-
[解決済み] Bashの履歴にコマンドを表示させないようにするには?
-
[解決済み] ループ内でユーザー入力を読み取る
-
[解決済み] ファイルツリー図の作成に使用するツールについて【終了しました
-
[解決済み] 環境変数の指定とエコーを同じコマンドラインで実行できないのはなぜですか?
-
[解決済み] Bashで文字列の一文字目を削除する