Cumu passate Argumentu per un Bash-Script

Mandati, sintassi e esempi

Pudete scrive un script bash cumu chì riceve l'argumenti specificate quandu u script hè chjamatu da a linea di cumanda. Stu metu hè usatu quandu un script hè di funziona una funzione ligeramente differenti, secondu u valore di i paràmetri di l'input (l'argumintazzioni).

Per esempiu, pudete avè un script chjamatu "stats.sh" chì cumporta una operazione particulari in un schedariu, cumu cuntendu i so parolle. Se vulete esse tene à pudè utilizà l'script in numerosi schedari, u megliu per passà u nome di l'archive cum'è un argumentu, in modu chì pudete aduprà a stessa scurazione di tutti i schedari da esse tratatu. Per esempiu, se u nomu di u schedariu da esse tratatu hè "songlist", intria esse ingressu a linea di l'ordine seguente:

sh stats.sh figliolu

Argumentu sò accessu in un script scripture cù e varie variabili $ 1, $ 2, $ 3, etc., induve $ 1 riferisce à u prima argumentu, $ 2 à a second argumente, è cusì. Questu hè illustratu in u vechju esempiu:

FILE1 = $ 1 wc $ FILE1

Per leghjibilità, assicone una variàbila cù un nome descriptivu à u valore di u prima argumentu ($ 1), è dopu chjamate a parolla utilità di cunnessione ( wc ) nantu à questa variable ($ FILE1).

Se tenete una varianti varianti di argumenti, pudete utilizà a varianti "$ @", chì hè un array di tutti i parametri di iputate. Questu significa chì pudete aduprà un furlegate per prucessu iterativamenti tutti, cume illustrati in l'esempiu di seguente:

per FILE1 in "$ @" do wc $ FILE1 fattu

Eccu un esempiu di cumu chjamà stu scrittore cù argumenti da a linea di cumanda:

sh stats.sh songlist1 songlist2 songlist3

Sì un argumentu hè spaziu, avete bisognu à circundà cun quotes singuli. Per esempiu:

sh stats.sh 'songlist 1' 'songlist 2' 'songlist 3'

Spessu un script hè scrittu cusì chì l'usu pò passà in argumenti in qualsiasi ordine chì utilizate bandieri. Cù u metudu di bandieri, pudete dinò alcuni arcuni opcional.

Diciarete chì avete un script chì retrieve l'infurmazione da una basa di basa basata nantu à paràmetri chjamati, cum'è "username", "date" è "product", è genera un rapportu in un "formatu" especificatu. Avete vogliu scrive u scrittore cumu pudete passà questi paràmetri quandu u script hè chjamatu. Pò esse pareci:

macereport -u jsmith -p notebooks -d 10-20-2011 -f pdf

Bash permette sta funziunalità cù a funzione "getopts". Per l'esempiu di supra, pudete usà ottene u seguente:

Questu hè un pocu tempu chì utilizeghja a funzione di "getopts" è una "optstring", in questu casu "u: d: p: f:", per iteranu à l'argumenti. L'intracinche di parcorsu viaghja through the optstring, chì cuntene i bandieri chì ponu esse usatu per passà argumenti, è assignanu u valore di l'argumentu dispostu à quella bandiera à a variable "option". A custruzzione di u casu assigne nant'à u valore di a variable "opzione" per una variabile globale chì ponu utilizà quandu tutti i argumenti sò legatu.

I coloni in l'optstring significanu chì i valori sò obligatorii per i bandieri pertinenti. In l'altu esempiu tutti i bandieri sò siguiti da un colon: "u: d: p: f:". Questu significa chì tutti i bandieri necessanu un valore. Se, per esempiu, i bandieri "d" è "f" ùn anu micca expected un valore, u optstring seria "u: dp: f".

Un colonu à u principiu di l'optstring, per esempiu ": u: d: p: f:", hà un significatu completamente differenti. Vi permette di gestione bandieri chì ùn sò micca rapprisentati in u optstring. In questu casu, u valore di a "option" variable hè stata per "?" è u valore di "OPTARG" hè stituutu à u bellu inesperatu. U permetterete vede un missaghju d'errore adattatu chì informa à l'utilizatori di l'errore.

Argumintazzioni chì ùn sò micca precedenti da una bandiera sò ignorati da e persone. Se i bandieri specifichi in u optstring ùn sò micca furnuti in u scrittore hè chjamatu, ùn hè nunda, finu à chì ùn mancanu solu stu casu in u vostru còdice. Ogni argumentu mancu trattatu da e getops pò ancu esse captu cù i modi regulatori di $ 1, $ 2, ecc.