grep version: 2.20
zgrep version: 1.5
$cat test1
hello
$cat test2
goodbye
$cat test3
goodbye
$cat test4
goodbye
$grep "hello" test1 #works as expected
hello
$echo $?
0
$grep "goodbye" test1 #works as expected
$echo $?
1
$grep "hello" * #works as expected. gets line from test1 and returns 0
test1:hello
$echo $?
0
$grep "goodbye" * #works as expected. gets lines from test2, 3, and 4 and returns 0
test2:goodbye
test3:goodbye
test4:goodbye
$echo $?
0
despite stating zgrep works the same as grep, the return codes over multiple files are different
$zgrep "hello" test1 #works as expected
hello
$echo $?
0
$zgrep "goodbye" test1 #works as expected
$echo $?
1
$zgrep "hello" * #does NOT work as expected. gets line from test1 and returns 1. grep states that if ANY line is found, 0 will be returned
test1:hello
$echo $?
1
$zgrep "goodbye" * #does NOT work as expected. gets lines from test2, 3, and 4 and returns 1. grep states that if ANY line is found, 0 will be returned
test2:goodbye
test3:goodbye
test4:goodbye
$echo $?
1
$zgrep "goodbye" test2 test3 test4 #works as expected. finds pattern in all files and returns 0. bug only occurs if files exist where the pattern is not found
test2:goodbye
test3:goodbye
test4:goodbye
$echo $?
0