Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.syntblaze.com/llms.txt

Use this file to discover all available pages before exploring further.

The elif (else-if) clause is a conditional control structure in Bash used within an if construct to evaluate sequential, mutually exclusive conditions. It allows for the chaining of multiple test expressions at the same logical depth, preventing the need for deeply nested if...else statements.

Syntax

The elif clause must follow an initial if statement and precede an optional else statement. It requires its own then keyword to define the block of code to execute.
if command_1; then
    # Executed if command_1 returns exit status 0
elif command_2; then
    # Executed if command_1 returns non-zero AND command_2 returns exit status 0
elif command_3; then
    # Executed if preceding commands return non-zero AND command_3 returns exit status 0
else
    # Executed if all preceding commands return a non-zero exit status
fi
Note: command_n is typically a test construct like [ ] (POSIX test), [[ ]] (Bash extended test), or (( )) (arithmetic evaluation), but it can be any standard Unix command.

Execution Mechanics

  1. Sequential Evaluation: Bash evaluates elif conditions strictly from top to bottom. An elif condition is only evaluated if the preceding if statement, and any preceding elif statements, return a non-zero exit status (logical false).
  2. Short-Circuiting: The moment an elif command returns an exit status of 0 (logical true), Bash executes the corresponding then block. Once that block completes, control jumps to the end of the entire if...fi construct. Subsequent elif clauses are not evaluated.
  3. Exit Status: The exit status ($?) of the entire if...elif...fi construct is determined by the exit status of the last command executed within the triggered then block. If no conditions evaluate to 0 and no else block is present, the construct completes with an exit status of 0.

Structural Rules

  • Dependency: An elif cannot exist independently; it must be bound to a parent if statement.
  • Multiplicity: You can chain an arbitrary number of elif clauses within a single if...fi construct.
  • Placement: All elif clauses must be declared before the else fallback clause, if one is utilized.
  • Termination: The elif block does not require its own closing tag; the entire chain is terminated by the single fi keyword belonging to the parent if statement.
Master Bash with Deep Grasping Methodology!Learn More