0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Bash if Conditions: A Comprehensive Guide

Posted at

Bash if Conditions: A Comprehensive Guide

This document explains how to use if conditions in Bash scripting, covering common scenarios with examples.


1. Basic if, else, else if (elif)

Syntax:

if [ condition ]; then
    # Code if condition is true
elif [ another_condition ]; then
    # Code if another_condition is true
else
    # Code if all conditions are false
fi

Example:

read -p "Enter a number: " num

if [ "$num" -gt 10 ]; then
    echo "Greater than 10"
elif [ "$num" -eq 10 ]; then
    echo "Exactly 10"
else
    echo "Less than 10"
fi

2. if with AND (&&) / OR (||) Conditions

Syntax:

  • AND (&&) → Both conditions must be true.
  • OR (||) → At least one condition must be true.

Example:

age=25
name="Alice"

if [ "$age" -gt 18 ] && [ "$name" == "Alice" ]; then
    echo "Welcome, Alice! You are an adult."
fi

if [ "$age" -lt 18 ] || [ "$name" == "Bob" ]; then
    echo "You are either under 18 or named Bob."
fi

3. if with Command Result Condition

Check if a command succeeds (exit 0) or fails (exit non-zero).

Example:

if grep -q "error" /var/log/syslog; then
    echo "Error found in logs!"
else
    echo "No errors found."
fi

# Check if a file exists
if [ -f "/etc/passwd" ]; then
    echo "File exists."
fi

4. if String Exists (or Not)

Check if a string is empty or non-empty.

Example:

str="Hello"

if [ -z "$str" ]; then
    echo "String is empty."
elif [ -n "$str" ]; then
    echo "String is not empty."
fi

# Check if a substring exists
if [[ "$str" == *"ell"* ]]; then
    echo "Substring 'ell' found."
fi

5. if Equal to Number (Numeric Comparison)

Use -eq, -ne, -gt, -lt, -ge, -le.

Example:

num=15

if [ "$num" -eq 15 ]; then
    echo "Number is 15."
elif [ "$num" -lt 10 ]; then
    echo "Number is less than 10."
fi

6. if Not Exist (Negative Conditions)

Check if a file/directory does not exist or a condition is false.

Example:

file="/tmp/test.txt"

if [ ! -f "$file" ]; then
    echo "File does not exist."
fi

if [ "$num" -ne 20 ]; then
    echo "Number is not 20."
fi

7. Other Frequently Used if Conditions

Condition Example Description
Check if directory exists if [ -d "/path" ]; then True if directory exists
Check if file is readable if [ -r "$file" ]; then True if file has read permissions
Check if variable is set if [ -v "$var" ]; then True if variable exists
Check if file is executable if [ -x "/bin/bash" ]; then True if file is executable
Check if string matches regex if [[ "$str" =~ ^[A-Z] ]]; then True if string starts with uppercase

Example:

dir="/etc"

if [ -d "$dir" ]; then
    echo "$dir is a directory."
fi

if [[ "$USER" =~ ^root$ ]]; then
    echo "You are root!"
fi

Summary Cheat Sheet

Condition Type Syntax
Basic if-else if [ cond ]; then ... fi
AND (&&) if [ cond1 ] && [ cond2 ]; then
OR (`
Command Success if cmd; then
String Exists if [ -n "$str" ]; then
String Empty if [ -z "$str" ]; then
Number Comparison if [ "$num" -eq 10 ]; then
File Exists if [ -f "$file" ]; then
Directory Exists if [ -d "$dir" ]; then
Negative Condition if [ ! cond ]; then

Final Tips

Always quote variables ("$var") to avoid word splitting.
Use [[ ]] for advanced string matching (supports ==, =~).
Prefer -eq for numbers, == for strings.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?