🏠 | 💻 IT | Linux | Bash |

Bash Comparison Operators

Binary comparison operators compare two variables or quantities.

To compare strings, some comparison operators are used for numbers, others.

<

Comparing numbers

-eq

is equal to - equals

if [ "$a" -eq "$b" ]

-ne

is not equal to - not equal to

if [ "$a" -ne "$b" ]

-gt

is greater than

if [ "$a" -gt "$b" ]

-eq

is equal to

if [ "$a" -eq "$b" ]

-ge

is greater than or equal to

if [ "$a" -ge "$b" ]

-lt

is less than

if [ "$a" -lt "$b" ]

-le

is less than or equal to

if [ "$a" -le "$b" ]

<

is less than (within double parentheses)

(("$a" < "$b"))

<=

is less than or equal to (within double parentheses)

(("$a" <= "$b"))

>

is greater than (within double parentheses)

(("$a" > "$b"))

>=

is greater than or equal to (within double parentheses)

(("$a" >= "$b"))

String comparison

=

is equal to

if [ "$a" = "$b" ]

Caution Note the whitespace framing the =. if [ "$a"="$b" ] is not equivalent to the above.

==

is not equal to

if [ "$a" == "$b" ]

This is a synonym for =. Note The == comparison operator behaves differently within a double-brackets test than within single brackets. [[ $a == z* ]] # True if $a starts with an "z" (pattern matching). [[ $a == "z*" ]] # True if $a is equal to z* (literal matching). [ $a == z* ] # File globbing and word splitting take place. [ "$a" == "z*" ] # True if $a is equal to z* (literal matching). # Thanks, Stéphane Chazelas

!=

is not equal to

if [ "$a" != "$b" ]

This operator uses pattern matching within a [[ ... ]] construct.

<

is less than, in ASCII alphabetical order

if [[ "$a" < "$b" ]] if [ "$a" \< "$b" ]

Note that the "<" needs to be escaped within a [ ] construct.

>

is greater than, in ASCII alphabetical order

if [[ "$a" > "$b" ]] if [ "$a" \> "$b" ]

Note that the ">" needs to be escaped within a [ ] construct. See Example 27-11 for an application of this comparison operator.

-z

string is null, that is, has zero length

String='' # Zero-length ("null") string variable.

if [ -z "$String" ] then echo "\$String is null." else echo "\$String is NOT null." fi # $String is null.

-n

string is not null.

Caution The -n test requires that the string be quoted within the test brackets. Using an unquoted string with ! -z, or even just the unquoted string alone within test brackets (see Example 7-6) normally works, however, this is an unsafe practice. Always quote a tested string.

Статьи о Bash
Bash
Bash Scripting
if else: Условные операторы
Цикл while
date
Переход на новую строку
Арифметические операции
Передать файл или пароль по SFTP в Bash скрипте
Errors Bash
Share in social media: