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.