Re: strange shell behavior...thoughts?

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

 



On 14Sep2008 23:50, Kevin Martin <kevintm@xxxxxxxxxxxxx> wrote:
| So I'm fairly confused at this point.
| 
| Start with a /bin/sh shell.
| 
| Then do:
| 
| sh-3.2$ unset $?
| sh: unset: `0': not a valid identifier
| 
| ok, no problem; then do
| 
| sh-3.2$ /bin/ksh -c " set -xv  ; grep ABCD  b ; echo $? ; if [ "$?" =
| "0" ] ; then echo yes ; fi"

You know you need to escape " inside ", yes? As it happens it has no
effect in your script here, but ...

| + grep ABCD b
| ABCD="C" ; export ABCD
| + echo 1
| 1
| + [ 1 = 0 ]
| 
| WHAT? 

The "echo" command has a return status, and trashes your $?.

| Then do it again without unsetting $?:

You don't ever unset $?. It is not a meaningful idea.

If you want a particular $?, do this:

  grep ABCD b
  xit=$?
  echo $xit     # overwrites $?, but $xit is untouched
  if [ $xit = 0 ]
  then
   ...

but almost invariably when someone does:

  some_command ...
  if [ $? = 0 ]
  then

they would be MUCH better off just going:

  if some_command ...
  then

Remember that the predicate in an if/while if a command_list, and the
exit status of the last command in the command_list is what is tested.
The command "[" (aka "test") is just another command suited to simple
Boolean tests. But it is not "special".

Example:

  # repeat prompt until EOF or empty reply
  while echo "Enter something:"
        read foo && [ -n "$foo" ]
  do
    echo "foo=$foo"
  done

| [...snip...] Is this a ksh bug?

No.

Cheers,
-- 
Cameron Simpson <cs@xxxxxxxxxx> DoD#743
http://www.cskk.ezoshosting.com/cs/

The first ninety percent of the task takes ninety percent of the time, and
the last ten percent takes the other ninety percent.

-- 
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]     [Older Fedora Users]     [Fedora Announce]     [Fedora Package Announce]     [EPEL Announce]     [Fedora Magazine]     [Fedora News]     [Fedora Summer Coding]     [Fedora Laptop]     [Fedora Cloud]     [Fedora Advisory Board]     [Fedora Education]     [Fedora Security]     [Fedora Scitech]     [Fedora Robotics]     [Fedora Maintainers]     [Fedora Infrastructure]     [Fedora Websites]     [Anaconda Devel]     [Fedora Devel Java]     [Fedora Legacy]     [Fedora Desktop]     [Fedora Fonts]     [ATA RAID]     [Fedora Marketing]     [Fedora Management Tools]     [Fedora Mentors]     [SSH]     [Fedora Package Review]     [Fedora R Devel]     [Fedora PHP Devel]     [Kickstart]     [Fedora Music]     [Fedora Packaging]     [Centos]     [Fedora SELinux]     [Fedora Legal]     [Fedora Kernel]     [Fedora OCaml]     [Coolkey]     [Virtualization Tools]     [ET Management Tools]     [Yum Users]     [Tux]     [Yosemite News]     [Gnome Users]     [KDE Users]     [Fedora Art]     [Fedora Docs]     [Asterisk PBX]     [Fedora Sparc]     [Fedora Universal Network Connector]     [Libvirt Users]     [Fedora ARM]

  Powered by Linux