スクリプトは出力されませんafter
。
#!/bin/bash -e
echo "before"
echo "anything" | grep e # it would if I searched for 'y' instead
echo "after"
exit
Shebang行からオプションを削除することでこの問題を解決できますが、-e
スクリプトがエラー発生時に停止するようにしたいと思います。私はgrep
一致するものを見つけるのがバグだとは思わない。突然終了するのをどのように防ぐことができますか?
ベストアンサー1
echo "anything" | { grep e || true; }
説明する:
- エラーが発生します。
$ echo "anything" | grep e $ echo $? 1
- これはエラーを引き起こさない
$ echo "anything" | { grep e || true; } $ echo $? 0
- エラーを発生させないDopeGhotiの「no-op」
true
バージョン$ echo "anything" | { grep e || :; } $ echo $? 0
「または」という意味です||
。コマンドの最初の部分が「失敗」すると(ゼロ以外のgrep e
終了コードを返すことを意味します)、||
実行後の部分は成功し、終了コードとして0を返します(true
常に0が返されます)。