Moi!
Onnistuuko sellainen bash-skripti helposti, jossa skripti käynnistää taustalle prosessin (toisen ohjelman), odottaa sen tulosta (uutta tiedostoa) ja vasta sitten jatkaa omaa toimintaansa? Tuo prosessi saattaa kestää jopa minuutin. Vai odottaako se automaattisesti että edellinen komento on suoritettu loppuun? Vai pitääkö jollain käskyllä etsiä, että uusi tiedosto on jos olemassa?
(Ja kuten kysymyksestä voi päätellä, en ymmärrä asiasta paljoakaan, mutta olisi tällaiselle tarve.
)
esim.
#!/bin/bash
echo "start processing..."
process1 file1: luo tiedostoston file1, voi kestää minuutin tai pari.
process2 file1 file2: ottaa tiedoston file1 syötteeksi ja luo tiedoston file2
cat file2
Toimii suoraan esimerkkiskriptin mukaisesti. Tässä "process1 file1" suoritetaan ensin loppuun, ja sen jälkeen ajetaan "process2 file1 file2". Komentotulkki ei suorita komentoja rinnakkain ellet erikseen pyydä sitä. Oletuksena komennot suoritetaan yksi kerrallaan, odottaen että ne valmistuvat.
Tarvittaessa voit vielä erikseen selvittää, että suoritettava prosessi on onnistunut tehtävässään tutkimalla sen lopetusarvoa (exit status) tai tarkistamalla, että prosessin luoma tiedosto on olemassa. Prosessien suorituksen voi ketjuttaa lopetusarvon perusteella esimerkiksi && tai || -operaattoreilla:
&& -operaattorilla seuraava komento suoritetaan vain jos edellisen suoritus on onnistunut, eli exit status on 0:
process1 file1 && process2 file1 file2|| -operaattorilla seuraava komento suoritetaan vain jos edellisen suoritus on epäonnistunut, eli exit status poikkeaa nollasta:
process1 file1 || process2 file1 file2