return values from bash script
Use command substitution to capture the output of echo
, and use arithmetic expression to count the result:
script_a.bash:
echo $(( $1 * 5 ))
script_b.bash
a_value=$( script_a.bash 3 )
Don't use return
or exit
, as they're for indicating the success/failure of a script, not the output.
Write your script like this:
#!/bin/bashecho $(( $1 * 5 ))
Access the value:
a_value=$(./script_a.bash 3)
That is, use a $(command substitution)
in the consuming code to capture the output of the script.
You can use exit rc;, but keep in mind that conventionally in *nix 0 is a successful result, any positive value is an error code. Is it an option to call
echo <your_value>;
and redirect output to the next binary called in the chain?