Problem when using variable assignment, backticks in shell script

Dave Korn dave.korn@artimi.com
Tue Aug 29 16:16:00 GMT 2006


On 29 August 2006 17:04, Silva, Russell wrote:


> The value of $? is always 0 when this problem occurs, even if it should
> be a non-zero value.  For instance:
> 
> <bug_reproduce3.sh>
> #!/bin/bash
> # make 1000 attempts to reproduce the bug
> for i in `seq 1 1000`
> do
>   # ls should return incorrect usage = error code 2
>   x=$(ls -j 2>&1);
>   # if the bug has occurred
>   if [[ $x == "" ]]
>   then
>     # this outputs 0, but "incorrect usage" ls should (and does) return
> 2
>     echo $?
>   fi
> done

> When the bug occurs, causing $x to be empty, the value of $? is 0 when
> it should be 2.


  Are you sure you aren't testing the return value of the 'if' or perhaps the
'[[' command there?  What happens if you rewrite it as:

#!/bin/bash
# make 1000 attempts to reproduce the bug
for i in `seq 1 1000`
do
  # ls should return incorrect usage = error code 2
  x=$(ls -j 2>&1); y=$?
  # if the bug has occurred
  if [[ $x == "" ]]
  then
    echo $y
  fi
done


    cheers,
      DaveK
-- 
Can't think of a witty .sigline today....


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list