Cum să gestionezi argumentele liniei de comandă în Bash?

Cum Sa Gestionezi Argumentele Liniei De Comanda In Bash



În Linux, folosim argumente de linie de comandă ca intrare pentru scriptul bash. Bash poate prelua aceste argumente din linia de comandă secvenţial şi le poate analiza ca opţiune. Aceste argumente vă permit să afectați dinamic acțiunile și rezultatul scriptului.

Puteți configura aceste argumente în mod diferit pentru a influența intrarea și ieșirea. De aceea, gestionarea argumentelor de linie de comandă în bash este esențială, dar mulți utilizatori noi trebuie să învețe cum să o facă. Deci, în acest ghid, vom explica diferite moduri de a gestiona argumentele liniei de comandă în bash.







Cum să gestionezi argumentele liniei de comandă în Bash?

Există diferite moduri de a gestiona argumentele liniei de comandă în Bash, așa că haideți să le aruncăm o privire pentru a obține informații scurte:



Funcția getopt



Funcția getopt este la îndemână deoarece oferă opțiunile și sintaxa pentru definirea și analizarea argumentelor în bash. Este o funcție încorporată a Linux pe care o puteți utiliza în timp ce creați un fișier de bază de date sau un raport într-un format specific bazat pe argumente. Funcția getopt ajută la analizarea argumentelor scurte din linia de comandă, deoarece există două tipuri de argumente:





  • Argumente scurte: Acestea sunt argumentele cu un singur caracter urmate de o cratimă. De exemplu, -a, -l, -h etc., sunt câteva exemple de argumente individuale.

  • Argumente lungi: Acestea sunt argumentele cu mai multe caractere urmate de o cratimă dublă. Există diverse exemple de argumente lungi, cum ar fi –all, –list, –help etc.

Să luăm un exemplu în care vom gestiona argumentele liniei de comandă folosind utilitarul getopt. Am creat un script bash numit „getopt.sh” care conține următoarele informații:



!/ cos / bash

in timp ce getopts „A:B:C:D:” Detalii; do

caz ' $detalii ' în

A )

ecou „Numele cetățeanului este $OPTARG ' ;;

B )

ecou „Identitatea de cetățean este $OPTARG ' ;;

C )

ecou „Locul nașterii este $OPTARG ' ;;

D )

ecou „Ocupația este $OPTARG ' ;;

* )

Ieșire 1 ;;

esac

Terminat

schimb ' $(($OPTIND -1) )'



dacă [ ! -Cu $1 ] ; apoi

ecou „Starea civilă $1”

altfel

ecou „Fără intrări”

Ieșire 1

fi



dacă [ ! -Cu 2 dolari ] ; apoi

ecou „Membri de familie 2 USD”

fi

Acum să executăm scriptul cu argumentele necesare în intrare:

După cum puteți vedea în imaginea de mai sus, rulăm scriptul numai cu funcții getopt și apoi adăugăm argumente normale pentru a obține rezultatul complet.

Folosind steaguri

Steagurile nu sunt altceva decât caractere individuale precedate de cratime (-). Când transmitem argumentele folosind funcția getopt, folosim steaguri. -a, -b, -c sunt câteva exemple de steaguri. De exemplu,  un script necesită numele, actul de identitate, locul, vârsta și ocupația unui cetățean. Prin urmare, am folosit steaguri j, k, l, m, n pentru a defini simultan numele cetățeanului, ID, locul, vârsta și ocupația:

#!/bin/bash

In timp ce getopts j:k:l:m:n: flag_info

do

caz ' ${flag_info} ' în
< ol >
< acea > j ) nume de cetatean = ${OPTARG} ;; acea >
< acea > k ) cetateanid = ${OPTARG} ;; acea >
< acea > l ) loc = ${OPTARG} ;; acea >
< acea > m ) vârstă = ${OPTARG} ;; acea >
< acea > n ) ocupaţie = ${OPTARG} ;; acea >
ol >
esac

Terminat

ecou 'Iată detaliile introduse:'

ecou „Numele cetățeanului: $nume cetățean ' ;

ecou „ID de cetățean: $cetateanid ' ;

ecou 'Loc: $loc ' ;

ecou 'Vârstă: $varsta ' ;

ecou 'Ocupaţie: $ocupaţie ' ;

Scriptul va da următorul rezultat în terminal:

. /< scenariu > .SH -j Danny -k 476 -l Toronto -m 25 -n Autor

Folosind [e-mail protejat] Cu bucle

„ [e-mail protejat] ” variabila nu este altceva decât matricea tuturor argumentelor de intrare. Putem trece orice număr de intrări folosind „ [e-mail protejat] ' variabil. Puteți utiliza această variabilă ca buclă pentru a itera argumentele. „ [e-mail protejat] ” variabila vine la îndemână atunci; nu cunoașteți dimensiunea intrării și nu puteți accepta argumentele poziționale. Prin urmare, puteți folosi „ [e-mail protejat] ”  în loc să definiți funcția getopt din nou și din nou. Iată un exemplu de utilizare a buclelor și [e-mail protejat] împreună într-un scenariu:

#!/bin/bash

pe unu = ( „$ @ )



dacă [ $# -gt 1 ]

apoi



adăuga =$ ( ( ${num[0]} + ${num[1]} ) )

ecou „Adunarea tuturor numerelor este: $adaugă '



scădere =$ ( ( ${num[0]} - ${num[1]} - ${num[2]} ) )

ecou „Scăderea numerelor este: $scădere '



multiplica =$ ( ( ${num[0]} * ${num[1]} * ${num[2]} ) )

ecou „Înmulțirea numerelor este: $multiplicare '



diviziunea 1 =$ ( ( ${num[0]} / ${num[1]} ) )

ecou „Diviziunea ${num[0]} și ${num[1]} este: $diviziune1 '



diviziunea 2 =$ ( ( ${num[1]} / ${num[2]} ) )

ecou „Diviziunea de ${num[1]} și ${num[2]} este: $diviziune2 '



diviziunea 3 =$ ( ( ${num[0]} / ${num[2]} ) )

ecou „Diviziunea de ${num[0]} și ${num[2]} este: $diviziune2 '



fi

Scriptul de mai sus efectuează diferite calcule aritmetice bazate pe argumentele liniei de comandă. De exemplu, am introdus 50, 35 și 15 ca intrare:

Utilizarea parametrilor poziționali

Puteți accesa parametrii poziționali, deoarece accesează mai întâi $1, apoi $2 și așa mai departe. De exemplu, să creăm un script care citește un nume ca prim argument și apoi un oraș ca al doilea. Cu toate acestea, dacă treceți mai întâi de oraș și apoi de numele, atunci acesta consideră numele oraș și invers. Să aruncăm o privire mai profundă în următorul script pentru a înțelege acest concept:

#!/bin/bash

ecou 'Aici sunt detaliile introduse'

ecou 'numele $1'

ecou 'oraș 2 $'

Trebuie să adăugați numele și orașul în momentul executării scriptului în terminal:

Încheierea

Acesta este tot ce trebuie să știți despre metodele de a gestiona argumentele liniei de comandă în bash. Am explicat diferite abordări pe care le puteți încerca cu exemplele adecvate. Există diverse comenzi dacă doriți să adăugați argumente în script. Așa că asigurați-vă că vizitați Linuxhint pentru a afla mai multe despre ele.