Bird
Raised Fist0
Bash Scriptingscripting~10 mins

Return values (return and echo) in Bash Scripting - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Return values (return and echo)
Start function
↓
Execute commands
↓
Use echo to output value
↓
Use return to set exit status
↓
Function ends
↓
Caller captures echo output or return status
↓
Use output or status in script
A bash function uses echo to send output text and return to set an exit status code. The caller can capture either.
Execution Sample
Bash Scripting
myfunc() {
  echo "Hello"
  return 3
}
myfunc
status=$?
output=$(myfunc)
Defines a function that echoes text and returns a status; then calls it capturing both.
Execution Table
StepActionEcho OutputReturn StatusNotes
1Call myfuncFunction starts
2Execute echo "Hello"HelloOutput sent to stdout
3Execute return 33Function exits with status 3
4Capture $? after myfunc3Return status stored in status
5Capture output=$(myfunc)Hello0Output captured, return status of subshell is 0
6Check status variable3Status from first call remains 3
💡 Function ends after return; caller captures output and status separately
Variable Tracker
VariableStartAfter Call 1After Call 2Final
statusunset333
outputunsetunsetHelloHello
Key Moments - 2 Insights
Why does the return status after capturing output with $(myfunc) show 0 instead of 3?
Because $(myfunc) runs the function in a subshell, the return status of the subshell is 0 if the command succeeds, not the function's return value. See execution_table row 5.
Can echo send a return status code?
No, echo only sends text output. The return command sets the exit status code. See execution_table rows 2 and 3.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the value of 'status' after the first call to myfunc?
A3
B0
CHello
Dunset
💡 Hint
Check execution_table row 4 where status is set after myfunc returns
At which step does the function output 'Hello' to stdout?
AStep 1
BStep 2
CStep 3
DStep 4
💡 Hint
Look at execution_table row 2 for echo output
If we remove the return statement, what will be the return status after calling myfunc?
A3
B1
C0
DUndefined
💡 Hint
By default, bash functions return 0 if no explicit return is given
Concept Snapshot
Bash functions use echo to send output text.
Use return to set an exit status (0-255).
Caller captures output with $(func) and status with $?.
Echo output and return status are separate.
Return ends function immediately.
Subshells affect return status capture.
Full Transcript
In bash scripting, functions can send output using echo and set an exit status using return. When you call a function, echo sends text to standard output, which you can capture using command substitution like output=$(myfunc). The return command sets a numeric exit status accessible via $?. Note that capturing output with $(myfunc) runs the function in a subshell, so the return status of the subshell is usually 0 if the command succeeds, not the function's return value. To get the function's return status, call it normally and check $?. Echo and return serve different purposes: echo for output, return for status. The function ends immediately after return. Understanding these helps you handle function outputs and statuses correctly in bash scripts.

Practice

(1/5)
1. In bash scripting, what does the return command inside a function do?
easy
A. It stops the entire script immediately.
B. It sends a numeric status code back to the caller.
C. It prints text output to the terminal.
D. It saves the function output to a file.

Solution

  1. Step 1: Understand the purpose of return in bash functions

    The return command sends a numeric exit status (0-255) back to the caller, indicating success or failure.
  2. Step 2: Differentiate from echo

    Unlike echo, which prints text output, return only sends a number status, not text.
  3. Final Answer:

    It sends a numeric status code back to the caller. -> Option B
  4. Quick Check:

    return = numeric status [OK]
Hint: Remember: return sends number status, echo prints text [OK]
Common Mistakes:
  • Thinking return prints output like echo
  • Using return to output strings
  • Confusing return with exit
2. Which of the following is the correct syntax to return a status code 5 from a bash function named check?
easy
A. exit 5
B. echo 5
C. return(status=5)
D. return 5

Solution

  1. Step 1: Recall bash function return syntax

    To return a status code from a function, use return followed by the number, e.g., return 5.
  2. Step 2: Identify incorrect options

    echo 5 prints text, return(status=5) is invalid syntax, and exit 5 exits the whole script.
  3. Final Answer:

    return 5 -> Option D
  4. Quick Check:

    Use return number syntax [OK]
Hint: Use 'return' followed by number to send status [OK]
Common Mistakes:
  • Using echo instead of return for status
  • Trying to use parentheses in return
  • Using exit inside function to return status
3. What will be the output of this script?
myfunc() {
  echo "Hello"
  return 3
}
myfunc
echo $? 
medium
A. 3\nHello
B. Hello\n0
C. Hello\n3
D. 3\n3

Solution

  1. Step 1: Analyze function output

    The function prints "Hello" using echo, so "Hello" appears first.
  2. Step 2: Check return status and echo it

    The function returns 3, so $? after calling it is 3, which is printed next.
  3. Final Answer:

    Hello\n3 -> Option C
  4. Quick Check:

    echo prints text, return sets status [OK]
Hint: echo prints text first, $? shows return code after function [OK]
Common Mistakes:
  • Confusing echo output with return value
  • Expecting return value to print automatically
  • Ignoring that $? holds last return status
4. Identify the error in this bash function:
myfunc() {
  return "Success"
}
myfunc
echo $?
medium
A. return expects a number, not a string
B. echo cannot print return values
C. Function missing parentheses
D. return must be last command in function

Solution

  1. Step 1: Understand return command rules

    In bash, return must be followed by a numeric status (0-255), not a string.
  2. Step 2: Identify the error in the code

    The code tries to return "Success" (a string), which causes an error.
  3. Final Answer:

    return expects a number, not a string -> Option A
  4. Quick Check:

    return only accepts numbers [OK]
Hint: return only accepts numbers, not text [OK]
Common Mistakes:
  • Trying to return strings with return
  • Confusing echo and return usage
  • Assuming return prints output
5. How can you capture the text output of a bash function greet that uses echo inside, and store it in a variable msg?
hard
A. msg=$(greet)
B. msg=return greet
C. msg=`return greet`
D. msg=echo greet

Solution

  1. Step 1: Understand capturing function output

    To capture text output from a function that uses echo, use command substitution: $(function_name).
  2. Step 2: Identify correct syntax

    msg=$(greet) runs greet and stores its echo output in msg. Other options misuse return or echo.
  3. Final Answer:

    msg=$(greet) -> Option A
  4. Quick Check:

    Use $(function) to capture echo output [OK]
Hint: Use $(function) to capture echo output in variable [OK]
Common Mistakes:
  • Using return instead of command substitution
  • Assigning echo command directly to variable
  • Using backticks incorrectly with return
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard