Ero sivun ”Bash-skriptaus” versioiden välillä

Siirry navigaatioon Siirry hakuun
(Lisäsin whilen ja untilin, sekä pari operaattoria)
Rivi 33: Rivi 33:
Muuttujat määritellään syntaksilla
Muuttujat määritellään syntaksilla
  nimi=arvo
  nimi=arvo
ja niihin viitataan syntaksilla
ja niihin viitataan laittamalla muuttujan eteen $
  $nimi
  $nimi
Tapauksia, joissa käyttäjän tarkoittama muuttuja on epäselvä, tulee käyttää aaltosulkuja muuttujan ympärillä
${foo}bar
kun halutaan tulostaa teksti <tt>bar</tt> muuttujan <tt>foo</tt> jälkeen.
Ensimmäisen skriptimme tapauksessa käytimme jo ympäristömuuttujaa $PWD echo:n kanssa. Tehdäänpä samantyyppinen skripti nyt käyttäen itse määrittelemäämme muuttujaa:
Ensimmäisen skriptimme tapauksessa käytimme jo ympäristömuuttujaa $PWD echo:n kanssa. Tehdäänpä samantyyppinen skripti nyt käyttäen itse määrittelemäämme muuttujaa:
  #!/bin/bash
  #!/bin/bash
Rivi 50: Rivi 54:
== Ehtolauseet ==
== Ehtolauseet ==
Ehdollisia rakenteita luodaan bashille if, then, else ja fi -avainsanoilla. Rakenteen syntaksi on seuraava:
Ehdollisia rakenteita luodaan bashille if, then, else ja fi -avainsanoilla. Rakenteen syntaksi on seuraava:
  if [ehto]
  if [ ehto ]
  then
  then
     lauseita
     lauseita
  elif [toinen ehto]
  elif [ toinen ehto ]
     lauseita
     lauseita
  else
  else
Rivi 81: Rivi 85:
| -d || Hakemisto on olemassa
| -d || Hakemisto on olemassa
|-  
|-  
| -f || Tiedosto on olemassa
| -f || Tavallinen tiedosto on olemassa
|-  
|-  
| -eq || Kokonaisluvut ovat yhtäsuuret
| -r || Onko tiedostoon lukuoikeus
|-
| -w || Onko tiedostoon kirjoitusoikeus
|-
| -x || Onko tiedostoon ajo-oikeus
|-
| -eq || Kokonaisluvut ovat yhtäsuuret (a = b)
|-  
|-  
| -neq || Kokonaisluvut eivät ole yhtä suuret
| -ne || Kokonaisluvut eivät ole yhtä suuret (a != b)
|-  
|-  
| = || Merkkijonot ovat samat
| = || Merkkijonot ovat samat (myös ==)
|-  
|-  
| != || Merkkijonot eivät ole samat
| != || Merkkijonot eivät ole samat
Rivi 93: Rivi 103:
| -lt || Kokonaisluku on pienempi kuin toinen
| -lt || Kokonaisluku on pienempi kuin toinen
|-  
|-  
| -gt || Kokonaisluku on suurempi kuin toinen
| -gt || Kokonaisluku on suurempi kuin toinen (a > b)
|-  
|-  
| -le || Kokonaisluku on pienempi tai yhtäsuuri kuin toinen
| -le || Kokonaisluku on pienempi tai yhtäsuuri kuin toinen (a <= b)
|-  
|-  
| -ge || Kokonaisluku on suurempi tai yhtäsuuri kuin toinen
| -ge || Kokonaisluku on suurempi tai yhtäsuuri kuin toinen (a >= b)
|}
|}


Rivi 124: Rivi 134:
  for muuttuja in {c..o}; { echo -n "$muuttuja "; sleep 1;}
  for muuttuja in {c..o}; { echo -n "$muuttuja "; sleep 1;}
=== While ===
=== While ===
While suorittaa lausekkeita niin kauan kunnes ehto on tosi. Kun ehto on epätosi poistutaan loopista joilloin skriptin suoritus jatkuu seuraavalta loogiselta riviltä (while-lausekkeen jälkseiseltä riviltä).
while [ ehto ]
do
  lauseita
done


Esimerkki:
while [ -f "testi" ]
do
  echo "Tiedosto on olemassa."
  [[sleep]] 1
done
Edellä oleva skripti tarkistaa, onko samassa hakemistossa oleva tiedosto <tt>testi</tt> olemassa. Tätä jatketaan niin kauan kunnes tiedostoa ei enää ole.
=== Until ===
Until on while:n vastakohta. Until-lauseke jatkaa suoritusta niin kauan kunnes ehto on tosi.
until [ ehto ]
do
  lauseita
done
== Funktiot ==
== Funktiot ==
Kuten "oikeissa" ohjelmointikielissä, myös bash-skripteissä on mahdollista käyttää funktioita seuraavalla tavalla
Kuten "oikeissa" ohjelmointikielissä, myös bash-skripteissä on mahdollista käyttää funktioita seuraavalla tavalla