Ero sivun ”Bash-skriptaus” versioiden välillä
Siirry navigaatioon
Siirry hakuun
Lisäsin whilen ja untilin, sekä pari operaattoria
p (→Hyödyllisiä ohjelmia: typo siellä) |
(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 | 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 || | | -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) | |||
|- | |- | ||
| - | | -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 |