This is the mail archive of the
cygwin
mailing list for the Cygwin project.
RE: Problem when using variable assignment, backticks in shell script
- From: "Dave Korn" <dave dot korn at artimi dot com>
- To: <cygwin at cygwin dot com>
- Date: Tue, 29 Aug 2006 17:11:56 +0100
- Subject: RE: Problem when using variable assignment, backticks in shell script
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/