私はこれら2つを一緒に操作しようとしています。
grep
見つかった場合は、エラーコード1で終了します。- 出力全体または一致する行を表示します。
これで最初のアイテムができました。 grep が一致すると 1 で終了します。しかし、フィードバックをどのように表示できますかstdout
?
見つかった場合、コマンドは失敗します。grep -vz hello
予想される動作:
(all
inを含むMakefile)
< Makefile grep -<magic> all
CFLAGS = -Wall -Wextra -Werror
all: $(NAME)
re: fclean all
.PHONY: all clean fclean re
exit 1
< Makefile grep -<magic> nothing
exit 0
ありがとう
ベストアンサー1
次のようなものが欲しいようです。
! grep -q -e "$expr" <"$file" || ! cat <"$file"
仮説の正規表現は、$expr
与えられたファイルのどこにも一致しません$file
。この場合、初期grep -q
終了状態はゼロではなく終了状態で終了し、これは前の終了状態によって無効になり、最終終了!
状態はゼロになります。 ORリストの2番目の部分は実行されません。出力がありません。
一方、grep -q
コマンドが一致する場合は、ORリストの2番目の部分をトリガーしてファイルを出力し、cat
終了ステータスを0に無効にして終了ステータスを0以外の値に設定しますcat
。
DeMorganの法則を使用して否定的なANDリストに再構成されます。
! ( grep -q -e "$expr" <"$file" && cat <"$file" )