Bird
Raised Fist0
Bash Scriptingscripting~10 mins

if-then-else in Bash Scripting - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - if-then-else
Start
↓
Evaluate condition
↓
Execute THEN block
↓
End
↓
Execute ELSE block
↓
End
The script checks a condition. If true, it runs the THEN part; if false, it runs the ELSE part, then ends.
Execution Sample
Bash Scripting
if [ "$num" -gt 10 ]; then
  echo "Greater than 10"
else
  echo "10 or less"
fi
Checks if variable num is greater than 10 and prints a message accordingly.
Execution Table
StepConditionCondition ResultBranch TakenOutput
1[ "$num" -gt 10 ]TrueTHENGreater than 10
2End of if-then-else---
💡 Condition true, THEN branch executed, script ends.
Variable Tracker
VariableStartAfter Step 1Final
num151515
Key Moments - 2 Insights
Why does the script run the THEN block and not the ELSE block when num is 15?
Because at Step 1 in the execution_table, the condition [ "$num" -gt 10 ] is True, so the THEN branch is taken.
What happens if the condition is false?
If the condition is false, the ELSE block runs instead, as shown in the concept_flow where the No branch leads to ELSE execution.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the output at Step 1 when num=15?
AGreater than 10
B10 or less
CNo output
DError
💡 Hint
Check the Output column in execution_table row for Step 1.
At which step does the script decide which branch to take?
ABefore Step 1
BStep 2
CStep 1
DAfter Step 2
💡 Hint
Look at the Condition and Branch Taken columns in execution_table.
If num was 5 instead of 15, which branch would run?
ATHEN branch
BELSE branch
CBoth branches
DNo branch
💡 Hint
Refer to concept_flow and key_moments about condition false leading to ELSE.
Concept Snapshot
if [ condition ]; then
  # commands if true
else
  # commands if false
fi

Checks condition once.
Runs THEN block if true.
Runs ELSE block if false.
Ends after one branch runs.
Full Transcript
This visual execution shows how a bash if-then-else works. The script starts and evaluates the condition. If the condition is true, it runs the THEN block commands. If false, it runs the ELSE block commands. Then the script ends. For example, if the variable num is 15, the condition checking if num is greater than 10 is true, so the THEN block runs and prints 'Greater than 10'. If num was 5, the ELSE block would run and print '10 or less'. This helps decide between two paths based on a condition.

Practice

(1/5)
1. What does the if-then-else structure do in a bash script?
easy
A. It comments out lines in the script.
B. It repeats a set of commands multiple times.
C. It defines a function to reuse code.
D. It lets the script choose between two paths based on a condition.

Solution

  1. Step 1: Understand the purpose of if-then-else

    The if-then-else structure checks a condition and runs code based on whether the condition is true or false.
  2. Step 2: Compare with other options

    Repeating commands is done with loops, functions reuse code, and comments do not execute code.
  3. Final Answer:

    It lets the script choose between two paths based on a condition. -> Option D
  4. Quick Check:

    if-then-else = choose path [OK]
Hint: If you see a condition, it's likely if-then-else [OK]
Common Mistakes:
  • Confusing if-then-else with loops
  • Thinking if-then-else defines functions
  • Mixing comments with control flow
2. Which of the following is the correct syntax to start an if statement in bash?
easy
A. if [ condition ]; then
B. if { condition } then
C. if(condition) then
D. if condition then

Solution

  1. Step 1: Recall bash if syntax

    Bash requires spaces around brackets and a semicolon before then: if [ condition ]; then.
  2. Step 2: Check other options

    if(condition) then misses spaces and semicolon, B uses braces incorrectly, D misses brackets and semicolon.
  3. Final Answer:

    if [ condition ]; then -> Option A
  4. Quick Check:

    Spaces and semicolon needed [OK]
Hint: Remember spaces around [ ] and semicolon before then [OK]
Common Mistakes:
  • No spaces around brackets
  • Missing semicolon before then
  • Using parentheses or braces incorrectly
3. What will be the output of this script?
#!/bin/bash
x=5
if [ $x -gt 3 ]; then
  echo "Greater"
else
  echo "Smaller"
fi
medium
A. No output
B. Smaller
C. Greater
D. Syntax Error

Solution

  1. Step 1: Evaluate the condition

    The condition checks if x (5) is greater than 3, which is true.
  2. Step 2: Determine which branch runs

    Since condition is true, the script prints "Greater".
  3. Final Answer:

    Greater -> Option C
  4. Quick Check:

    5 > 3 = Greater [OK]
Hint: Check numeric comparison carefully [OK]
Common Mistakes:
  • Confusing -gt with -lt
  • Missing spaces causing syntax errors
  • Assuming else runs when condition is true
4. Find the error in this script:
#!/bin/bash
if [ $num -eq 10 ]
  echo "Ten"
else
  echo "Not Ten"
fi
medium
A. Missing then after condition
B. Wrong comparison operator
C. Missing fi at the end
D. No error

Solution

  1. Step 1: Check if statement syntax

    The if condition must be followed by then keyword to start the true block.
  2. Step 2: Identify missing part

    The script misses then after the condition line.
  3. Final Answer:

    Missing then after condition -> Option A
  4. Quick Check:

    if needs then [OK]
Hint: Always put then after condition in if [ ] [OK]
Common Mistakes:
  • Forgetting then keyword
  • Using wrong comparison operators
  • Missing fi to close if
5. You want a script that prints "Even" if a number is even, and "Odd" if it is odd. Which script correctly uses if-then-else to do this?
num=4
# Choose correct script
hard
A. if [ $num % 2 -eq 0 ]; then echo "Even" else echo "Odd" fi
B. if (( num % 2 == 0 )); then echo "Even" else echo "Odd" fi
C. if [ $num % 2 == 0 ]; then echo "Even" else echo "Odd" fi
D. if [ $num / 2 -eq 0 ]; then echo "Even" else echo "Odd" fi

Solution

  1. Step 1: Understand arithmetic evaluation in bash

    Using double parentheses (( )) allows arithmetic expressions and comparisons directly.
  2. Step 2: Check each option

    if [ $num % 2 -eq 0 ]; then echo "Even" else echo "Odd" fi uses % inside [ ] without arithmetic evaluation. if [ $num % 2 == 0 ]; then echo "Even" else echo "Odd" fi uses % inside [ ] without arithmetic evaluation. if [ $num / 2 -eq 0 ]; then echo "Even" else echo "Odd" fi uses / instead of % for modulus. if (( num % 2 == 0 )); then echo "Even" else echo "Odd" fi correctly uses (( )) with modulus and comparison.
  3. Final Answer:

    if (( num % 2 == 0 )); then echo "Even" else echo "Odd" fi -> Option B
  4. Quick Check:

    Use (( )) for arithmetic if [OK]
Hint: Use (( )) for math conditions in bash [OK]
Common Mistakes:
  • Using [ ] with arithmetic operators incorrectly
  • Confusing / with % for modulus
  • Missing then keyword
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