Skalet sh

Översikt, 8: Villkor; sant och falskt

Alla kommandon som utförs i skalet lämnar ifrån sig ett returvärde: 0 om allt gått som det ska, och något annat om något gått snett. När man ger kommandon "rakt av" stoppar skalet bara in returvärdet i variabeln "?" (vars värde man kommer åt genom att skriva "$?"), men när ett kommando används som villkor så är det det returvärdet som gäller som sanningsvärde för villkoret.

Eftersom 0 är det positiva svaret, "allt har gått bra", så är det detta som räknas som sant, och icke-0 räknas som falskt.

Speciellt i fallet med "if" och "while" vill man gärna kunna undersöka om en fil med ett visst namn finns, om en variabel är satt till ett visst värde, och liknande, och för detta syfte finns kommandot "test", som bland annat kan användas på följande sätt:

  test $X = 17       Kolla om variabeln X har värdet 17

  test -f hello.c    Kolla om filen "hello.c" finns i
                     nuvarande katalog.

Kommandot test har en standardförkortning, [, som används ofta. Man skriver därför oftast
  if [ $X = 17 ] ; then
    kommando
  fi
istället för
  if
    test $X = 17
  then
    kommando
  fi
I det första av ovanstående exempel används även ett annat vanligt knep, att använda semikolon istället för ny rad. Märk väl att det måste vara mellanslag både före och efter såväl hakparentestecknen som semikolonet för att det ska fungera.