Skip to main content

Operators in Shell Scripting

Operators in shell scripting allow you to perform mathematical calculations, compare strings, and evaluate conditions.

Arithmetic Operators​

Bash can perform basic integer arithmetic. However, it does not support floating-point math natively.

Common operators: + (addition), - (subtraction), * (multiplication), / (division), % (modulus).

You can use the expr command, or the more modern double parentheses (( )).

A=10
B=20

# Using double parentheses (Recommended)
SUM=$((A + B))
echo "Sum is $SUM"

# Using expr
DIFF=$(expr $B - $A)
echo "Difference is $DIFF"

Relational (Numeric) Operators​

These operators are used to compare two numeric values. They are usually used inside test brackets [ ].

  • -eq : Equal to
  • -ne : Not equal to
  • -gt : Greater than
  • -lt : Less than
  • -ge : Greater than or equal to
  • -le : Less than or equal to
NUM=15
if [ "$NUM" -gt 10 ]; then
echo "Number is greater than 10"
fi

String Operators​

Used to compare string values.

  • = or == : Equal to
  • != : Not equal to
  • -z : String is null (zero length)
  • -n : String is not null (greater than zero length)
STR1="hello"
STR2="world"

if [ "$STR1" != "$STR2" ]; then
echo "Strings are different"
fi

Boolean (Logical) Operators​

Used to combine multiple conditions.

  • ! : Logical NOT
  • -o or || : Logical OR
  • -a or && : Logical AND
# Using standard brackets
if [ "$A" -gt 5 -a "$B" -lt 30 ]; then
echo "Condition met"
fi

# Using double brackets (Recommended for modern Bash)
if [[ "$A" -gt 5 && "$B" -lt 30 ]]; then
echo "Condition met"
fi

Best Practices​

  • Prefer (( )) for arithmetic operations over expr.
  • Prefer [[ ]] for logical operations and string comparisons, as it is safer and supports pattern matching.
  • Always quote your variables in single [ ] tests to avoid errors if a variable is empty.