Re: grep in spec file causes rpmbuild to abort with bad exit status

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> marks wrote:
> > I'm using grep in the install section of my spec file to determine
> > if another file does or does not contain a piece of information.
> > rpmbuild is aborting with a "bad exit status" message when grep 
> > does not find the item of interest.
> 
> If you use it directly:
> if grep -q bla file; then
>  ....
> 
> rpmbuild doesn't exit.

Of the suggestions this way is my favorite and most clear method.

I know that you have the problem solved but I wanted to mention a
related problem that I have seen others ask.  This is just drift from
the original question, but I think related.

The return code of grep indicates whether a pattern existed or not and
in the case here that is how it was being used.  But another common
other case is that people are using grep to sift out a particular
pattern and the return code is not significant there.  Well it is
actually significant (disk full problems, permission problems, etc.)
but people don't realize it.  But the issue I am referring to here is
that the 'sh -e' setting will cause a non-zero return from grep to
exit the script.

  grep PATTERN file1 > file2
  grep -v PATTERN file1 > file2

This causes a non-zero return code based upon the PATTERN match.

> If you want to ignore the exit code of a command, then add ||: (ie. or true).
> Note that will change $? to true.

I have seen this several times in other people's scripts.  I don't
like it because it loses I/O errors.

  grep PATTERN file1 > file2 || true
  grep -v PATTERN file1 > file2 || true

Better to use sed in this case.

  sed -n /PATTERN/p file1 > file2
  sed /PATTERN/d file1 > file2

The return code of sed is related only to errors occuring and not to
whether the pattern matched.  The sed will fail when there is a real
error as desired and the script would terminate in that case.

Bob

_______________________________________________
Rpm-list mailing list
Rpm-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/rpm-list

[Index of Archives]     [RPM Ecosystem]     [Linux Kernel]     [Red Hat Install]     [PAM]     [Red Hat Watch]     [Red Hat Development]     [Red Hat]     [Gimp]     [Yosemite News]     [IETF Discussion]

  Powered by Linux