Easy Tutorial
❮ Linux Comm Dmesg Linux Comm Repquota ❯

Shell test Command

The test command in Shell is used to check if a certain condition is true. It can perform tests on numbers, strings, and files.


Numerical Tests

Parameter Description
-eq True if equal
-ne True if not equal
-gt True if greater than
-ge True if greater than or equal
-lt True if less than
-le True if less than or equal

Example

num1=100
num2=100
if test $[num1] -eq $[num2]
then
    echo 'The two numbers are equal!'
else
    echo 'The two numbers are not equal!'
fi

Output:

The two numbers are equal!

The [] in the code performs basic arithmetic operations, such as:

Example

#!/bin/bash

a=5
b=6

result=$[a+b] # Note that there must be no spaces around the equal sign
echo "result is: $result"

Output:

result is: 11

String Tests

Parameter Description
= True if equal
!= True if not equal
-z string True if the length of the string is zero
-n string True if the length of the string is non-zero

Example

num1="ru1noob"
num2="tutorialpro"
if test $num1 = $num2
then
    echo 'The two strings are equal!'
else
    echo 'The two strings are not equal!'
fi

Output:

The two strings are not equal!

File Tests

Parameter Description
-e filename True if the file exists
-r filename True if the file exists and is readable
-w filename True if the file exists and is writable
-x filename True if the file exists and is executable
-s filename True if the file exists and has a size greater than zero
-d filename True if the file exists and is a directory
-f filename True if the file exists and is a regular file
-c filename True if the file exists and is a character special file
-b filename True if the file exists and is a block special file

Example

cd /bin
if test -e ./bash
then
    echo 'The file exists!'
else
    echo 'The file does not exist!'
fi

Output:

The file exists!

Additionally, Shell provides the logical operators AND (-a), OR (-o), and NOT (!) for connecting test conditions, with the precedence being: ! highest, -a next, and -o lowest. For example:

Example

cd /bin
if test -e ./notFile -o -e ./bash
then
    echo 'At least one file exists!'
else
    echo 'Neither file exists'
fi

Output:

At least one file exists!
❮ Linux Comm Dmesg Linux Comm Repquota ❯