The Bash being a scripting language does tend offer the conditional if else, We shall look at them in the following sections.
Firstly there needs to be a conditional check that has to be performed in order for the corresponding Block of code to be executed.
To break down the semantics of conditional control structures in BASH we need to understand The conditional keyword that performs the validation, the It is represented most commonly as “[“ and very rarely represented as “test” keyword.
It can be better understood by the following demonstration:
vamshi@linux-pc:~/Linux> [ 1 -gt 2 ] vamshi@linux-pc:~/Linux> echo $? 1 vamshi@linux-pc:~/Linux> vamshi@linux-pc:~/Linux> [ 1 -lt 2 ] vamshi@linux-pc:~/Linux> echo $? 0
The [ is synonymous to the command test on the linux kernel.
vamshi.santhapuri@linux-pc:~/Linux> test 1 -gt 2 vamshi.santhapuri@linux-pc:~/Linux> echo $? 1 vamshi.santhapuri@linux-pc:~/Linux> test 1 -lt 2 vamshi.santhapuri@linux-pc:~/Linux> echo $? 0
We Shall now look at the different variations of Conditional controls structures.
-
if then..fi
if [ Condition ] ; then statement1...statementN fi
-
if then..else..fi
if [ Condition ] ; then If Block statements ... else else-Block statement fi
-
if..then..elif then..elifN then..fi
if [ Condition ] ; then If Block statement1 ... elif [ elif Condition ]; then # 1st elif Condition elif Block statement1 elif [ elif Condition ]; then # 2nd elif Condition elif Block statements elif [ elif Condition ]; then # nth elif Condition elif Block statements fi
An
else
can also be appended accordingly when all the if and elif conditions fail, which we will see in this section . -
if..then..elif then..elifN then..else..fi
The “if elif elif else fi” control structure is like multiple test checking control diversion strategy in bash, gives the user the power to write as many test conditions as possible until a test condition is matched leading in the resultant block of code being executed. Writing this multiple elif can be tedious task and the switch case is mostly preferred
if [ Condition ] ; then If Block statement elif [ elif Condition ]; then # 1st elif Condition elif Block statement1 elif [ elif Condition ]; then # nth elif Condition elif Block statement ... else Block statementN # else block while gets control when none of if or elif are true. else Block statements fi
Atleast one of the block statements are executed in this control flow similar to a switch case. The else block here takes the default case when none of the if nor the elif conditions matches up.
-
Nested if then..fi Control structure Blocks
Adding to the
if..elif..else
there is also the nested if block wherein the nested conditions are validated which can be Demonstrated as follows:if [ condition ]; then Main If Block Statements if [ condition ]; then # 1st inner if condition 1st Inner If-Block statements if [ condition ]; then # 2nd inner if condition 2nd Inner If-Block statements if [ condition ]; then Nth Inner If Block statements fi fi fi fi
This logic of nested ifs are used while dealing with scenarios where the outermost block of statements must be validated before, if the test succeeds then the control flow is passed to the innermost
if
test statement execution. Thus the name Nested if.
Here is the switch case bash script with practical explanation.
We will look at the Exit codes within the BASH in the next sections.