Bird
Raised Fist0
Bash Scriptingscripting~5 mins

if-elif-else in Bash Scripting

Choose your learning style10 modes available
Introduction
Use if-elif-else to make decisions in your script based on different conditions.
Check if a file exists before processing it.
Decide what message to show based on user input.
Run different commands depending on the time of day.
Validate if a number is positive, negative, or zero.
Syntax
Bash Scripting
if [ condition ]; then
  # commands if condition is true
elif [ another_condition ]; then
  # commands if another_condition is true
else
  # commands if none of the above conditions are true
fi
Use spaces around brackets and conditions, like [ condition ].
End the if block with fi to close it.
Examples
Checks if age is 18 or more, then prints a message.
Bash Scripting
if [ "$age" -ge 18 ]; then
  echo "You are an adult."
else
  echo "You are a minor."
fi
Prints different messages based on the color value.
Bash Scripting
if [ "$color" = "red" ]; then
  echo "Stop"
elif [ "$color" = "yellow" ]; then
  echo "Caution"
else
  echo "Go"
fi
Sample Program
This script asks the user for a number and tells if it is positive, negative, or zero.
Bash Scripting
#!/bin/bash

read -p "Enter a number: " num

if [ "$num" -gt 0 ]; then
  echo "The number is positive."
elif [ "$num" -lt 0 ]; then
  echo "The number is negative."
else
  echo "The number is zero."
fi
OutputSuccess
Important Notes
Always quote variables inside [ ] to avoid errors if they are empty.
Use -eq, -ne, -gt, -lt, -ge, -le for numeric comparisons.
Use = or != for string comparisons inside [ ].
Summary
if-elif-else helps your script choose what to do based on conditions.
Remember to close the block with fi.
Use proper spacing and quoting to avoid syntax errors.

Practice

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

Solution

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

    The if-elif-else structure checks conditions one by one and runs the matching block.
  2. Step 2: Compare with other options

    Loops repeat commands, functions reuse code, comments disable code lines. Only if-elif-else chooses actions.
  3. Final Answer:

    It lets the script choose between multiple actions based on conditions. -> Option D
  4. Quick Check:

    if-elif-else = choose actions [OK]
Hint: If you want choices, use if-elif-else [OK]
Common Mistakes:
  • Confusing if-elif-else with loops
  • Thinking it defines functions
  • Mixing it up with comments
2. Which of the following is the correct syntax to start an if-elif-else block in Bash?
easy
A. if [ condition ]; then
B. if (condition) {
C. if condition then
D. if condition:

Solution

  1. Step 1: Recall Bash if syntax

    Bash requires square brackets around conditions and 'then' after the condition, with semicolons or newlines.
  2. Step 2: Check each option

    if [ condition ]; then uses correct syntax: if [ condition ]; then. Others use wrong brackets or missing keywords.
  3. Final Answer:

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

    Correct if syntax = if [ condition ]; then [OK]
Hint: Use brackets and 'then' with semicolon or newline [OK]
Common Mistakes:
  • Omitting brackets around condition
  • Using parentheses instead of brackets
  • Missing 'then' keyword
3. What will be the output of this script?
#!/bin/bash
num=7
if [ $num -lt 5 ]; then
  echo "Less than 5"
elif [ $num -eq 7 ]; then
  echo "Equal to 7"
else
  echo "Other"
fi
medium
A. Less than 5
B. Equal to 7
C. Other
D. Syntax Error

Solution

  1. Step 1: Check the value of num and conditions

    num=7. First condition checks if num < 5 (false). Second checks if num == 7 (true).
  2. Step 2: Determine which block runs

    Since second condition is true, it prints "Equal to 7" and skips else.
  3. Final Answer:

    Equal to 7 -> Option B
  4. Quick Check:

    num=7 matches elif condition [OK]
Hint: Check conditions top to bottom, first true runs [OK]
Common Mistakes:
  • Assuming first condition runs
  • Confusing -lt and -eq operators
  • Missing fi causes syntax error
4. Identify the error in this Bash script snippet:
if [ $value -gt 10 ]
  echo "Greater than 10"
elif [ $value -eq 10 ]; then
  echo "Equal to 10"
else
  echo "Less than 10"
fi
medium
A. Missing fi at the end
B. Incorrect use of elif keyword
C. Missing 'then' after first if condition
D. Wrong comparison operator

Solution

  1. Step 1: Check syntax after if condition

    In Bash, 'then' must follow the if condition, either on same line after semicolon or next line.
  2. Step 2: Verify other parts

    elif has 'then', fi is present, operators are correct. Only missing 'then' after if.
  3. Final Answer:

    Missing 'then' after first if condition -> Option C
  4. Quick Check:

    if needs 'then' keyword [OK]
Hint: Always put 'then' after if condition [OK]
Common Mistakes:
  • Forgetting 'then' after if
  • Misplacing semicolons
  • Confusing elif syntax
5. You want a script to print "Positive", "Zero", or "Negative" based on a variable num. Which script correctly uses if-elif-else to do this?
hard
A. #!/bin/bash if [ $num -gt 0 ]; then echo "Positive" elif [ $num -eq 0 ]; then echo "Zero" else echo "Negative" fi
B. #!/bin/bash if [ $num > 0 ]; then echo "Positive" elif [ $num == 0 ]; then echo "Zero" else echo "Negative" fi
C. #!/bin/bash if $num > 0 then echo "Positive" elif $num == 0 then echo "Zero" else echo "Negative" fi
D. #!/bin/bash if [ $num -ge 0 ]; then echo "Positive" elif [ $num -eq 0 ]; then echo "Zero" else echo "Negative" fi

Solution

  1. Step 1: Check comparison operators

    Bash uses -gt, -eq, -lt for numeric comparisons. #!/bin/bash if [ $num -gt 0 ]; then echo "Positive" elif [ $num -eq 0 ]; then echo "Zero" else echo "Negative" fi uses correct operators.
  2. Step 2: Verify logic and syntax

    #!/bin/bash if [ $num -gt 0 ]; then echo "Positive" elif [ $num -eq 0 ]; then echo "Zero" else echo "Negative" fi correctly checks >0, ==0, else negative. Others use wrong operators or syntax.
  3. Final Answer:

    A -> Option A
  4. Quick Check:

    Use -gt, -eq for numbers in if-elif-else [OK]
Hint: Use -gt, -eq for numbers; avoid > or == in [ ] [OK]
Common Mistakes:
  • Using > or == inside [ ]
  • Missing then keyword
  • Wrong operator for numeric comparison
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