Stații de lucru online OnWorks Linux și Windows

logo

Găzduire online gratuită pentru stații de lucru

<Înapoi | Cuprins | Următor>

Manipularea parametrilor poziționali În masă

Uneori este util să gestionați toți parametrii poziționali ca grup. De exemplu, am putea dori să scriem un „wrapper” în jurul altui program. Aceasta înseamnă că creăm un script sau o funcție shell care simplifică invocarea unui alt program. Wrapper-ul, în acest caz, furnizează o listă de opțiuni de linie de comandă arcane și apoi transmite o listă de argumente programului de nivel inferior.

Shell oferă doi parametri speciali în acest scop. Ambele se extind în lista completă a parametrilor poziționali, dar diferă în moduri destul de subtile. Sunt:


Tabelul 32-1: Parametrii speciali * și @


Descrierea parametrilor

Descrierea parametrilor

$* Se extinde în lista de parametri de poziție, începând cu 1. Când este înconjurat de ghilimele duble, se extinde într-un șir de ghilimele duble care conține toți parametrii de poziție, fiecare separat de primul caracter al variabilei shell IFS (în mod implicit un spațiu caracter).


imagine

$@ Se extinde în lista de parametri de poziție, începând cu 1. Când este înconjurat de ghilimele duble, extinde fiecare parametru de poziție într-un cuvânt separat, înconjurat de ghilimele duble.


imagine


Iată un script care arată acești parametri speciali în acțiune:

Manipularea parametrilor poziționali în masă


#! / Bin / bash

# posit-params3: script pentru a demonstra $* și $@ print_params () {

echo "\$1 = $1" echo "\$2 = $2" echo "\$3 = $3" echo "\$4 = $4"

}


pass_params () {

echo -e "\n" '$* :'; print_params $* echo -e "\n" '"$*" :'; print_params "$*" echo -e "\n" '$@ :'; print_params $@ echo -e "\n" '"$@" :'; print_params „$@”

}


pass_params „cuvânt” „cuvinte cu spații”

#! / Bin / bash

# posit-params3: script pentru a demonstra $* și $@ print_params () {

echo "\$1 = $1" echo "\$2 = $2" echo "\$3 = $3" echo "\$4 = $4"

}


pass_params () {

echo -e "\n" '$* :'; print_params $* echo -e "\n" '"$*" :'; print_params "$*" echo -e "\n" '$@ :'; print_params $@ echo -e "\n" '"$@" :'; print_params „$@”

}


pass_params „cuvânt” „cuvinte cu spații”


În acest program destul de complicat, creăm două argumente: „cuvânt” și „cuvinte cu spații”, și le transmitem pass_params funcţie. Această funcție, la rândul său, le transmite către print_params funcția, folosind fiecare dintre cele patru metode disponibile cu parametri speciali $* și $@. Când este executat, scriptul dezvăluie diferențele:


imagine

[eu@linuxbox ~]$ poziție-param3


$*:


$1

=

cuvânt

$2

=

cuvinte

$3

=

cu

$4

=

spații

„$*”:


$1

=

cuvinte cuvinte cu spații

$2

=

$3

=

$4

=

$@ :


$1

=

cuvânt

$2

=

cuvinte

$3

=

cu

$4

=

spații

„$@”:

$1 = cuvânt


$2 = cuvinte cu spații

3 USD =

4 USD =

$2 = cuvinte cu spații

3 USD =

4 USD =


Cu argumentele noastre, ambele $* și $@ produce un rezultat de patru cuvinte:

cuvinte cuvinte cu spații

„$*” produce un rezultat cu un singur cuvânt:

„cuvinte cuvinte cu spații”

„$@” produce un rezultat de două cuvinte:

„cuvânt” „cuvinte cu spații”

care se potrivește cu intenția noastră reală. Lecția de luat din aceasta este că, deși shell-ul oferă patru moduri diferite de a obține lista parametrilor de poziție, "$@„ este de departe cel mai util pentru majoritatea situațiilor, deoarece păstrează integritatea fiecărui parametru de poziție.


Top OS Cloud Computing la OnWorks: