Re: strange shell behavior...thoughts?

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

 



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

[Index of Archives]     [Current Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]     [Fedora Docs]

  Powered by Linux