IF-satser

Introduktion till Bash-skriptning

Alex Scriven

Data Scientist

En grundläggande IF-sats

En grundläggande IF-sats i Bash har följande struktur:

if [ CONDITION ]; then

# SOME CODE
else # SOME OTHER CODE
fi

Två tips:

  • Mellanslag mellan hakparenteser och de villkorliga elementen inuti (första raden)
  • Semikolon efter avslutande hakparentes ];
Introduktion till Bash-skriptning

IF-sats och strängar

Vi kan göra en enkel strängjämförelse i en IF-sats:

x="Queen"

if [ $x == "King" ]; then
echo "$x is a King!"
else echo "$x is not a King!" fi
Queen is not a King!

Du kan också använda != för 'inte lika med'

Introduktion till Bash-skriptning

Aritmetiska IF-satser (alternativ 1)

Aritmetiska IF-satser kan använda strukturen med dubbla parenteser:

x=10

if (($x > 5)); then echo "$x is more than 5!" fi
10 is more than 5!
Introduktion till Bash-skriptning

Aritmetiska IF-satser (alternativ 2)

Aritmetiska IF-satser kan också använda hakparenteser med en aritmetisk flagga i stället för (>, <, =, != osv.):

  • -eq för 'lika med'
  • -ne för 'inte lika med'
  • -lt för 'mindre än'
  • -le för 'mindre än eller lika med'
  • -gt för 'större än'
  • -ge för 'större än eller lika med'
Introduktion till Bash-skriptning

Exempel på aritmetisk IF-sats

Här återskapar vi det förra exemplet med hakparentesnotation:

x=10
if [ $x -gt 5 ]; then
    echo "$x is more than 5!"
fi
10 is more than 5!
Introduktion till Bash-skriptning

Andra villkorliga flaggor i Bash

Bash har också en rad filrelaterade flaggor, till exempel:

  • -e om filen finns
  • -s om filen finns och har en storlek större än noll
  • -r om filen finns och är läsbar
  • -w om filen finns och är skrivbar

Och flera andra:

Introduktion till Bash-skriptning

Använda AND och OR i Bash

 

För att kombinera villkor (AND) eller använda en OR-sats i Bash används följande symboler:

  • && för AND
  • || för OR
Introduktion till Bash-skriptning

Flera villkor

I Bash kan du antingen kedja villkor på följande sätt:

x=10
if [ $x -gt 5 ] && [ $x -lt 11 ]; then
    echo "$x is more than 5 and less than 11!"
fi

Eller använda notation med dubbla hakparenteser:

x=10
if [[ $x -gt 5 && $x -lt 11 ]]; then
    echo "$x is more than 5 and less than 11!"
fi
Introduktion till Bash-skriptning

IF och kommandoradsprogram

Du kan också använda många kommandoradsprogram direkt i villkoret, utan hakparenteser.

Till exempel, om filen words.txt innehåller 'Hello World!':

if grep -q Hello words.txt; then
    echo "Hello is inside!"
fi
Hello is inside!
Introduktion till Bash-skriptning

IF med skal-inom-skal

Du kan också använda ett skal-inom-skal i ditt villkor.

Låt oss skriva om det förra exemplet – resultatet blir detsamma.

if $(grep -q Hello words.txt); then
    echo "Hello is inside!"
fi
Hello is inside!
Introduktion till Bash-skriptning

Nu kör vi en övning!

Introduktion till Bash-skriptning

Preparing Video For Download...