Nested function calls in Bash

Right now, I'm trying to nest one bash function call inside another function call (so that the output of one function is used as the input for another function). Is it possible to nest function calls in bash, as I'm trying to do here?

First, I defined these two functions:

returnSomething()
{
    return 5;
}

funky ()
{
  echo $1;
}

Then, I tried to use the output of one function as the input for the other function. However, this next statement doesn't print the output of returnSomething. Instead, it prints nothing at all.

funky $returnSomething; #Now I'm trying to use the output of returnSomething as the input for funky.

Answers


You have two problems. One is that return does not set the output of a function, but rather its exit status (zero for success, nonzero for failure). For example, echo foo will output foo (plus a newline), but has an exit status of 0. To control output, use echo or printf:

function returnSomething ()     # should actually be outputSomething
{
    echo 5
}

The other problem is that $returnSomething (or ${returnSomething}) gives the value of a variable named returnSomething:

x=5          # sets the variable x
echo "$x"    # outputs 5

To capture the output of a command, use the notation $(...) (or `...`, but the latter is trickier). So:

function funky ()
{
    echo "$( "$1" )"
}
funky returnSomething    # prints 5

or just:

function funky ()
{
    "$1"          # runs argument as a command
}
funky returnSomething    # prints 5

By contrast, if you do want to capture the exit status of a command, use the special shell parameter ? (which is set to the exit status of a command when it completes):

function returnSomething ()
{
    return 5
}
function funky ()
{
    "$1"          # runs argument as a command
    echo "$?"     # prints its exit status
}
funky returnSomething    # prints 5

Need Your Help

Dealing with frames - fixed content of a website

javascript frame frameset

I'm working on my website and the main page (index.html) is composed of two frames: page1.html and page2.html. This is the code:

Computational Geometry open source lib

c# dll computational-geometry

does anyone know an open source c# dll for Computational Geometry.