Lisää
Parametrien välittäminen Bash-funktioon
Yritän etsiä, miten välittää parametreja Bash-funktiossa, mutta tuloksena on aina, miten välittää parametri komentoriviltä.
Haluaisin siirtää parametreja skriptini sisällä. Olen kokeillut:
myBackupFunction("..", "...", "xx")
function myBackupFunction($directory, $options, $rootPassword) {
...
}
Mutta syntaksi ei ole oikea, miten välitän parametrin funktiooni?
893
3
On kaksi tyypillistä tapaa ilmoittaa funktio. Suosin toista lähestymistapaa.
tai
Voit kutsua funktiota, jolla on argumentteja:
Funktio viittaa välitettyihin argumentteihin niiden sijainnin mukaan (ei nimen mukaan), eli $1, $2 ja niin edelleen. $0 on itse skriptin nimi.
Esimerkki:
Lisäksi sinun on kutsuttava funktiota sen jälkeen, kun se on julistettu.
Tulos:
Viite: Advanced Bash-Scripting Guide.
Korkean tason ohjelmointikielten (C/C++/Java/PHP/Python/Perl ...) tuntemus antaisi maallikolle ymmärtää, että bash-funktioiden pitäisi toimia kuten näissä muissa kielissä. Sen sijaan bash-funktiot toimivat kuin komentotulkin komennot ja odottavat, että niille annetaan argumentteja samalla tavalla kuin komentotulkin komennolle (ls -l). Itse asiassa funktioiden argumentteja käsitellään bashissa asetusparametreina* (
$1, $2..$9, ${10}, ${11}
, ja niin edelleen). Tämä ei ole yllätys, kun otetaan huomioon, mitengetopts
toimii. Sulkumerkkejä ei tarvita kutsuttaessa funktiota bashissa.(Huomautus: Satun työskentelemään Open Solariksella tällä hetkellä.)
Jätä sulut ja pilkut pois:
ja funktion pitäisi näyttää tältä: