Monday, May 8, 2017

If / Else Statements (Shell Scripting)

If / Else Statements (Shell 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 [ "$#" -gt 0 ]
then
    echo "There's Beans"
fi

if [ "$1" = "cool" ]
then
echo "Cool Beans"
fi
(Notice that the fi is simply if spelled backwards). To add an else, we just use standard syntax.
#!/bin/bash

if [ "$1" = "cool" ]
then
    echo "Cool Beans"
else
    echo "Not Cool Beans"
fi
Adding an else-if statement structure is used with the elif command.
#!/bin/bash

if [ "$1" = "cool" ]
then
    echo "Cool Beans"
elif [ "$1" = "neat" ]
then
    echo "Neato cool"
else
    echo "Not Cool Beans"
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 ComparisonDescription
Str1 = Str2Returns true if the strings are equal
Str1 != Str2Returns true if the strings are not equal
-n Str1Returns true if the string is not null
-z Str1Returns true if the string is null
Numeric ComparisonDescription
expr1 -eq expr2Returns true if the expressions are equal
expr1 -ne expr2Returns true if the expressions are not equal
expr1 -gt expr2Returns true if expr1 is greater than expr2
expr1 -ge expr2Returns true if expr1 is greater than or equal to expr2
expr1 -lt expr2Returns true if expr1 is less than expr2
expr1 -le expr2Returns true if expr1 is less than or equal to expr2
! expr1Negates the result of the expression
File ConditionalsDescription
-d fileTrue if the file is a directory
-e fileTrue if the file exists (note that this is not particularly portable, thus -f is generally used)
-f fileTrue if the provided string is a file
-g fileTrue if the group id is set on a file
-r fileTrue if the file is readable
-s fileTrue if the file has a non-zero size
-uTrue if the user id is set on a file
-wTrue if the file is writable
-xTrue if the file is an executable

No comments:

Post a Comment