Kirjoita Bash-skripti vastaanottaaksesi argumentit, jotka määritetään, kun komentosarjaa kutsutaan komentoriviltä. Käytä tätä menetelmää, kun skriptin on suoritettava hieman erilainen toiminto riippuen syöttöparametrien arvoista, ns. argumentteja†
Esimerkki argumenttien välittämisestä bash-komentosarjassa
Jos olet kehittänyt skriptin nimeltä stats.sh Kun lasketaan tiedoston sanat, on parasta välittää tiedoston nimi argumenttina, jotta samaa komentosarjaa voidaan käyttää kaikkiin käsiteltäviin tiedostoihin. Jos esimerkiksi käsiteltävän tiedoston nimi on: musiikkiluettelokirjoita seuraava komentoriville: sh stats.sh laululista
class=»ql-syntax»> Argumentteja voidaan käyttää skriptissä muuttujien avulla $1† 2 dollaria† 3 dollaria, ja niin edelleen. muuttuja $1 viittaa ensimmäiseen argumenttiin, 2 dollaria toiseen argumenttiin ja 3 dollaria kolmanteen argumenttiin. Esimerkiksi komentosarjassa: FILE1=$1wc $TIEDOSTO1
class=»ql-syntax»> Anna muuttuja, jolla on kuvaava nimi ensimmäisen argumentin arvolle (
$1) ja kutsu sitten muuttujan sanalaskentatyökalu (WC). $FILE1 tai mitä muuta haluat tehdä. Jos tarvitset muuttuvan määrän argumentteja, käytä † muuttuja, joka on joukko syöteparametreja. Tämä menettely käyttää ‘for’-silmukkaa niiden käsittelemiseen iteratiivisesti, kuten seuraavassa esimerkissä havainnollistetaan: TIEDOSTO1 kohtaan «$@»dowc $FILE1done
class=»ql-syntax»> Tässä on esimerkki tämän skriptin kutsumisesta komentoriviargumenteilla: sh stats.sh laululista1 kappalelista2 kappalelista3
class=»ql-syntax»> Jos argumentti sisältää välilyöntejä, kirjoita se yksittäisiin lainausmerkkeihin. Esimerkki: sh stats.sh ‘kappalelista 1’ ‘kappalelista 2’ ‘kappalelista 3’
class=»ql syntax»>
Lippumenetelmä:
Usein komentosarja kirjoitetaan niin, että argumentit voidaan välittää missä tahansa järjestyksessä lippujen avulla. Liput-menetelmä mahdollistaa joidenkin argumenttien tekemisen valinnaisiksi. Kirjoita esimerkiksi komentosarja, joka hakee tietoja tietokannasta määritettyjen parametrien perusteella, kuten: käyttäjätunnus† Päivämääräja Tuoteja luo raportin tietyssä muodossa. Skripti on kirjoitettava niin, että nämä parametrit välitetään, kun komentosarjaa kutsutaan. Se voi näyttää tältä: makereport -u jsmith -p muistikirjat -d 20-10-2011 -f pdf
class=»ql-syntax»> Bash mahdollistaa tämän toiminnon kanssa päällä toiminto. Käytä yllä olevassa esimerkissä päällä kuten tämä: while topts u:d:p:f: vaihtoehto
tehdä
tapaus «${option}»
sisään
u) KÄYTTÄJÄ=${OPTARG};;
d) DATE=${OPTARG};;
p) TUOTE=${OPTARG};;
f) FORMAT=${OPTARG};;
esac
tehty
class=»ql-syntax»> Tämä on while-silmukka, joka käyttää . käytetty päällä toiminto ja ns optstring-tässä tapauksessa sinä:d:p:f:– toistaa väitteet. The sillä aikaa silmukka kiertää optstringin, joka sisältää argumenttien välittämiseen käytetyt liput, ja määrittää kyseisen lipun argumentin arvon muuttujalle vaihtoehto† The tapaus lause määrittää sitten muuttujan arvon vaihtoehto globaaliin muuttujaan, jota käytetään sen jälkeen, kun kaikki argumentit on luettu.
Kaksoispisteiden merkitykset
Kaksoispisteet valintamerkkijonossa tarkoittavat, että arvot vaaditaan vastaaville lipuille. Yllä olevassa esimerkissä sinä:d:p:f:, kaikkia lippuja seuraa kaksoispiste. Tämä tarkoittaa, että kaikki liput tarvitsevat arvon. Esimerkiksi jos d ja f lipuilla ei odotettu olevan arvoa, sinä:dp:f olisi valintamerkkijono. Aloituspiste asettaa toptit «hiljaiseen raportointitilaan». Sen sijaan, että käsikirjoitusta kierrettäisiin kokonaan, jokainen odottamaton argumentti täyttää ? vaihtoehto ja voit etsiä sitä tai käsitellä sitä tarpeen mukaan. Ilman ensimmäistä kaksoispistettä valintamerkkijonossa pääte palauttaa virheen. Minulla on esimerkiksi ylhäältä käsikirjoitus, joka laskee sanat. Se odottaa syntaksia, kuten «stats.sh -f tiedostonimi». Ilman kaksoispistettä, jos yritän «stats.sh -h», saan: stats.sh -h
stats.sh: laiton vaihtoehto — h
Kaksoispisteellä voin laittaa skriptiini rivin, joka odottaa jotain kuten – ?) echo «No -${OPTARG} argumenttia ei löytynyt.»;; † Tämän avulla voin siepata ja käsitellä odottamattoman syötteen (tässä tapauksessa suorittamalla oman virheviestini). stats.sh -h
-h argumenttia ei löytynyt.
Argumentit, joita ei edeltä lippu, ohitetaan päällä† Jos optstringissä määritettyjä lippuja ei anneta komentosarjaa kutsuttaessa, mitään ei tapahdu, ellet erityisesti käsittele tätä koodissasi. Kaikkia argumentteja ei käsitellä topit voidaan silti kaapata tavallisella $1† 2 dollariaja 3 dollaria muuttujia.