if statement

När vi använder if-satser är vi redan bekanta med att det görs en kontroll där en operator används för att avgöra hur vi går vidare med exekveringen. Nedan visas if-satserna i sin fulla form. Ofta behöver man inte skriva ut hela utan man gör testet och använder sedan en operator för villkoret, mer likt en ternary if sats.

#if

En helt vanlig if-sats. Håll till godo.

#!/usr/bin/env bash
#
# An example script on if statement

# If with values

val1=10

if [[ $val1 -gt 5 ]]
then
    echo "$val1 is greater than 5"
fi

# If with strings

string1="musik"
string2="akustik"

if [[ $string1 = "musik" ]]
then
    echo "$string1 spells like musik"
fi

if [[ $string1 != "$string2" ]]
then
    echo "$string1 is not the same word as $string2"
fi

Vi kan skriva om if-satser i Bash på följande sätt:

#!/usr/bin/env bash

# Another (cleaner) way to write an if statement

val1=10

[[ $val1 -gt 5 ]] && echo "$val1 is greater than 5"

Istället för && (och) kan vi även använda || (eller) för att styra vad som händer.

#else-if/else

Vi blandar in else-if och else blocken med och tittar hur konstruktionen ser ut:

#!/usr/bin/env bash
#
# An example script on if/else-if statement

# If/else-if/else with values

val1=5

if [[ $val1 -gt 5 ]]
then
    echo "$val1 is greater than 5"
elif [[ $val1 -lt 5 ]]
then
    echo "$val1 is less than 5"
else
    echo "$val1 is 5"
fi

Man kan även stöta på konstruktioner som:

#!/usr/bin/env bash
#
# An example script on if/else-if statement

# If/else-if/else with values
val1=5

if [[ $val1 -gt 5 ]]; then echo "$val1 is greater than 5"
elif [[ $val1 -lt 5 ]]; then echo "$val1 is less than 5"
else echo "$val1 is 5"
fi

Det fungerar precis lika bra och validerar fint. Semikolonet används för att separera kommandon på samma rad.

#Ternary

Många funderar säkert på om det går att förkorta det ännu mer, likt en ternary operator. Vi löser det på följande sätt:

#!/usr/bin/env bash
#
# An example script on ternary variant

val1=10

[[ $val1 -ge 5 ]] && res="greater or equal" || res="less"
echo "$res"

#Revision history

  • 2019-03-08: (A, lew) Första versionen.

Document source.