Afficher un message
Vieux 29/10/2006, 14h07   #7
paintedjazz@gmail.com
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: return values from a function call


Janis Papanagnou wrote:
> paintedjazz@gmail.com wrote:
> > If I use the result of a function call in a condtional statement,
> > is it possible to return one of three possible values or is it just
> > true or false or a 0 or 1 status?
> >
> > I want to test if a number is greater than, equal to or less than
> > another number.
> > Thus, the function should be something like:
> >
> > if myfunction $num $another_num # return value is probably only 0 or
> > 1
> > then
> > echo $num is greater than
> > else
> > echo $num is less than
> > fi
> >
> > But I need to know if $num and $another_num are equal too.
> >
> > Can I just have the function return a value (other than the status)
> > that could be tested?
> > How could I do that? Thx for your .
> >

>
> You could of course return values of 0, 1, and 2 from the function,
> then test the return code through variable $? in a case statement.
>
> fn() { ...
> return $anyresult
> }
>
> case $? in
> ...
> esac
>
> But the intention of the exit code is rather to indicate success
> (code 0) or failure (code >0), and conceptually the shell functions
> are more like commands than like mathematical functions. Values from
> functions are usually returned through the "print interface"...
>
> fn() { ...
> print $anyresult
> }
>
> result=$( fn arg1 arg2 )
> if [ $result -eq ... ]
>
> Or use a case statement...
>
> case $( fn arg1 arg2 ) in
> ...
> esac
>
>
> Janis


I'm not sure what the"print interface" is. Do you mean you just echo
or printf a string to stdout and that will end up as the result of the
function? I do like this way of doing it though.

  Réponse avec citation
 
Page generated in 0,07173 seconds with 9 queries