Guia de principiants a BASH - Paràmetres d'entrada

Benvingut a la 2a part de la Guia d'inici per a la sèrie BASH, que és única ja que és l'únic tutorial BASH escrit per un principiant per a principiants.

Els lectors d'aquesta guia compilaran els seus coneixements a mesura que construeixi el meu coneixement i, amb esperança, al final de tot, podrem escriure uns guions bastant intel·ligents.

La setmana passada vaig cobrir la creació del primer script que només mostrava les paraules "Hello World". Cobreix temes com ara editors de text, com obrir una finestra de terminal, on introduir les seqüències d'ordres, com mostrar les paraules "Hello World" i alguns punts més precisos sobre els personatges d'escapament, com ara les cometes ("").

Aquesta setmana vaig a cobrir els paràmetres d'entrada. Hi ha altres guies que ensenyen aquest tipus de coses, però em sembla que arriben a un nivell relativament baix i potser proporcionen massa informació.

Què és un paràmetre?

En el guió "Hello World" de l'últim tutorial, tot era molt estàtic. El guió en realitat no va fer gaire.

Com podríem millorar el script "Hello World"?

Què passa amb un script que saluda a la persona que l'executa? En lloc de dir "Hello World", es dirà "Hello Gary", "Hello Tim" o "Hello Dolly".

Sense la possibilitat d'acceptar paràmetres d'entrada hauríem d'escriure tres scripts "hellogary.sh", "hellotim.sh" i "hellodolly.sh".

Al permetre que el nostre script llegeixi els paràmetres d'entrada, podem utilitzar un script per saludar a qualsevol.

Per fer-ho, obriu una finestra de terminal (CTRL + ALT + T) i navegueu a la vostra carpeta de scripts escrivint el següent: ( sobre comanda de cd )

scripts de cd

Creeu un nou script anomenat greetme.sh escriviu el següent: ( sobre la comanda de toques )

Toca greetme.sh

Obriu el script al vostre editor favorit escrivint el següent: ( sobre la comanda nano )

nano greetme.sh

Introduïu el text següent dins del nano:

#! / bin / bash echo "hola $ @"

Premeu CTRL i O per desar el fitxer i, a continuació, CTRL i X per tancar el fitxer.

Per executar el script, introduïu el següent a la línia d'ordres, substituint-lo pel vostre nom.

sh greetme.sh

Si executeu l'script amb el meu nom, mostra les paraules "Hola Gary".

La primera línia té la línia #! / Bin / bash que s'utilitza per identificar el fitxer com a script bash.

La segona línia utilitza la instrucció echo per fer ressò de la paraula hola i després hi ha la notació extra de $ @. ( sobre comanda de ressò )

El $ @ s'amplia per mostrar tots els paràmetres que s'han introduït juntament amb el nom del script. Si escriviu "sh greetme.sh tim", es mostraran les paraules "hello tim". Si heu escrit "greetme.sh tim smith", es mostraran les paraules "hello tim smith".

Pot ser que sigui bo per a l'escriptura greetme.sh que acaba de saludar utilitzant només el primer nom. Ningú diu "hola gary newell" quan es troben amb mi, però podria dir "hola gary".

Anem a canviar el script perquè només utilitzi el primer paràmetre. Obriu l'script greetme.sh en nano escrivint el següent:

nano greetme.sh

Canvieu el script perquè es llegeixi el següent:

#! / bin / bash echo "hola $ 1"

Deseu el script prement CTRL i O i, a continuació, sortiu prement CTRL i X.

Executeu el script com es mostra a continuació (reemplaça el meu nom pel vostre):

sh greetme.sh gary newell

Quan executeu l'script, simplement us dirà "hola gary" (o, amb sort, "hola" i el que sigui el vostre nom.

L'1 després del símbol $, bàsicament, diu l'ordre echo, utilitzeu el primer paràmetre. Si reemplaça els $ 1 amb un valor de $ 2, es mostrarà "hello newell" (o el que sigui el vostre cognom).

Per cert, si reemplaçava els $ 2 amb un $ 3 i va executar la seqüència de comandaments amb tan sols 2 paràmetres, la sortida seria simplement "Hola".

És possible mostrar i gestionar el nombre de paràmetres realment introduïts i en tutorials posteriors mostraré com utilitzar el recompte de paràmetres amb finalitats de validació.

Per mostrar el nombre de paràmetres introduïts, obriu el script greetme.sh (nano greetme.sh) i modifiqueu el text de la manera següent:

#! / bin / bash echo "heu introduït $ # noms" echo "hola $ @"

Premeu CTRL i O per desar el script i CTRL i X per sortir del nano.

El $ # a la 2 ª línia mostra el nombre de paràmetres introduïts.

Fins ara tot això ha estat nou però no gaire útil. Qui necessita un script que simplement mostra "hola"?

L'ús real per a les declaracions de ressò és proporcionar una sortida detallada i significativa a l'usuari. Si podeu imaginar que voleu fer alguna cosa complicat que impliqui una gran quantitat de cruixits i la manipulació de fitxers / carpetes, seria útil mostrar a l'usuari el que està passant cada pas del camí.

Per contra, els paràmetres d'entrada fan que el vostre script sigui interactiu. Sense paràmetres d'entrada necessitaràs desenes de scripts fent coses molt similars però amb noms lleugerament diferents.

Tenint en compte tot això, hi ha altres paràmetres d'entrada útils que és una bona idea saber-ho i els inclouré en un sol fragment de codi.

Obriu l'script greetme.sh i modifiqueu-lo de la manera següent:

#! / bin / bash echo "Nom del fitxer: $ 0" echo "ID del procés: $ $" echo "---------------------------- --- "echo" heu introduït $ # noms "echo" hola $ @ "

Premeu CTRL i O per desar el fitxer i CTRL i X per sortir.

Ara executeu l'script (reemplaça amb el vostre nom).

sh greetme.sh

Aquesta vegada, l'script mostra el següent:

Nom del fitxer: greetme.sh Identificador del procés: 18595 ------------------------------ heu introduït 2 noms hello gary newell

Els $ 0 a la primera línia del script mostren el nom del script que esteu executant. Tingueu en compte que és dòlar zero i no dòlar o.

El $ $ a la segona línia mostra l'id del procés del script que s'està executant. Per què és útil? Si esteu executant un script en primer pla, podeu cancel·lar-lo simplement prement CTRL i C. Si heu executat l'script en segon pla i va començar a fer el mateix i repetint-se una o altra vegada o va començar a causar danys al vostre sistema, necessitaríeu per matar-ho.

Per matar un script que s'executa en segon pla necessiteu l'id del procés del script. No seria bo si el script donés l'id del procés com a part de la seva sortida. ( sobre ordres ps i kill )

Finalment, abans d'acabar amb aquest tema, he volgut parlar d'on surt la sortida. Cada vegada que l'script s'ha executat fins ara, la sortida s'ha mostrat a la pantalla.

És molt comú que la sortida de seqüència d'ordres s'escrigui en un fitxer de sortida. Per fer-ho executeu el vostre script de la manera següent:

sh greetme.sh gary> greetme.log

El símbol> a l'ordre anterior proporciona el text "hola gary" a un fitxer anomenat greetme.log.

Cada vegada que executeu l'script amb el símbol> sobreescriu els continguts del fitxer de sortida. Si preferiu afegir al fitxer, substituïu> amb >>.

Resum

Ara hauríeu de poder escriure text a la pantalla i acceptar paràmetres d'entrada.