If / Else Statements (Shell/bash Scripting)

Shell scripts use fairly standard syntax for if statements. The conditional statement is executed using either the test command or the [ command ].
In its most basic form an if statement is:
#!/bin/bash if [ "$1" -eq "abc" ] then echo "in if block" fi

(Notice that the fi is simply if spelled backwards).

To add an else, we just use standard syntax.

#!/bin/bash if [ "$1" -eq "abc" ] then echo "in if block" else echo "in else block" fi

Adding an else-if statement structure is used with the elif command.

#!/bin/bash if [ "$1" -eq "abc" ] then echo "in if block" elif [ "$1" -eq "xyz" ] echo "in else if block" else echo "in else block" fi

An if statement does not require two parameters.

You can use single flags as well. The following code tests to see if the first parameter is a file or not.

#!/bin/bash if [ -f "$1" ] then echo "$1 is a file" else echo "$1 is not a file" fi

There are many different ways that an conditional statement can be used. These are summarized here:

String Comparison Description
Str1 = Str2 Returns true if the strings are equal
Str1 != Str2 Returns true if the strings are not equal
-n Str1 Returns true if the string is not null
-z Str1 Returns true if the string is null
Numeric Comparison Description
expr1 -eq expr2 Returns true if the expressions are equal
expr1 -ne expr2 Returns true if the expressions are not equal
expr1 -gt expr2 Returns true if expr1 is greater than expr2
expr1 -ge expr2 Returns true if expr1 is greater than or equal to expr2
expr1 -lt expr2 Returns true if expr1 is less than expr2
expr1 -le expr2 Returns true if expr1 is less than or equal to expr2
! expr1 Negates the result of the expression
File Comditionals Description
-d file True if the file is a directory
-e file True if the file exists (note that this is not particularly portable, thus -f is generally used)
-f file True if the provided string is a file
-g file True if the group id is set on a file
-r file True if the file is readable
-s file True if the file has a non-zero size
-u True if the user id is set on a file
-w True if the file is writable
-x True if the file is an executable

-Sany

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s