Kevin Martin wrote:
| sh-3.2$ /bin/ksh -c " set -xv ; grep ABCD b ; echo $? ; if [ "$?" =
| "0" ] ; then echo yes ; fi"
What I've been seeing is if I try to pass the
"/bin/ksh -c "if...."" script the $? of the grep never seems to be 0 for
some reason so I essentially get the results that I showed in my example
where I was doing the dumb "unset $?" (making, at that point, $? = 1).
I agree that the "if some_command" would be a much better way of doing
this but I get the same results if I do that as I do if I do the
"some_command" the "if [ $? = 0 ]" test. From reading the man page for
ksh I may be running into a POSIX vs non-POSIX issue.
Can you share what you see when you use the "if some_command" form?
$ /bin/ksh -c 'grep ABCD b ; if [ "$?" = "0" ] ; then echo yes ; fi'
$ /bin/ksh -c 'grep ABCD b && echo yes'
$ /bin/ksh -c 'if grep ABCD b ; then echo yes ; fi'
All of the above forms work here when I test them.
Your original test has two flaws:
1) You're not quoting the $ sign properly, so $? gets expanded by your
shell, before being passed as an argument to ksh.
2) "echo" would set a new value for $? if you did quote it properly, so
that the value will always be 0 in the "if" test. (which Cameron
pointed out, and I completely ignored. ;)
It's not a POSIX issue.
--
fedora-list mailing list
fedora-list@xxxxxxxxxx
To unsubscribe: https://www.redhat.com/mailman/listinfo/fedora-list
Guidelines: http://fedoraproject.org/wiki/Communicate/MailingListGuidelines