[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: variable assignment in string returning function
From: |
DennisW |
Subject: |
Re: variable assignment in string returning function |
Date: |
Wed, 27 Jan 2010 11:46:46 -0800 (PST) |
User-agent: |
G2/1.0 |
On Jan 27, 10:54 am, "Chris F.A. Johnson" <ch...@cfajohnson.com>
wrote:
> On Wed, 27 Jan 2010, Sharuzzaman Ahmat Raslan wrote:
> > I found the behaviour of the function below is a little bit odd. Appreciate
> > if someone can share his/her knowledge regarding the behaviour.
>
> > The output of the script will be:
>
> > sharuzzaman@debian:~$ ./case1.sh
> > Nice behaviour,
>
> > Somehow, the backtick for foo() execute the function, echoing the correct
> > output, but fails to set the variable $gang to the correct value. Because of
> > that, the function bar() did not echoing anything because the variable $gang
> > is null.
>
> > I would expect that $gang is set with the correct value and function bar()
> > will work after that.
> ...
> > #startscript----------
> > #!/bin/bash
>
> > # test case for variable assignment in string returning function
> > # case 1: function with echo
>
> > name="optimus"
>
> > foo () {
> > if [ "$name" = "optimus" ]
> > then
> > gang="good"
> > echo "Nice behaviour"
> > else
> > gang="bad"
> > echo "Naughty behaviour"
> > fi
> > }
>
> > bar () {
> > case "$gang" in
>
> > good)
> > echo "autobot"
> > ;;
>
> > bad)
> > echo "decepticon"
> > ;;
> > esac
> > }
>
> > behaviour=`foo`
> > group=`bar`
>
> > echo $behaviour,$group
> > #endscript------------------------
>
> name="optimus"
>
> foo () {
> if [ "$name" = "optimus" ]
> then
> gang="good"
> echo "Nice behaviour"
> return 0
> else
> gang="bad"
> echo "Naughty behaviour"
> return 1
> fi
>
> }
>
> bar () {
> case "$gang" in
>
> good)
> echo "autobot"
> return 0
> ;;
>
> bad)
> echo "decepticon"
> return 1
> ;;
> esac
>
> }
>
> behaviour=`foo` && gang=good || gang=bad
> group=`bar` && gang=good || gang=bad
>
> echo $behaviour,$group
>
> --
> Chris F.A. Johnson <http://cfajohnson.com>
> ===================================================================
> Author:
> Shell Scripting Recipes: A Problem-Solution Approach (2005, Apress)
> Pro Bash Programming: Scripting the GNU/Linux Shell (2009, Apress)
Setting gang based on the return values of bar is redundant.