Sintaxă:
eval [argument ...]Aici, argumentele sunt analizate și combinate într-un șir care va fi executat de către shell. „eval” returnează un cod de stare de ieșire după executarea comenzii. „eval” returnează 0 ca cod de stare de ieșire dacă nu este furnizat niciun argument sau este furnizat doar argument nul.
Exemplu-1: Executați comanda „wc” folosind „eval”
Să presupunem că un fișier text numit „departament.txt”Conține următorul text. Numărul total de linii ale fișierului poate fi numărat prin comanda „wc”.
departament.txt
CSEEEE
ETE
ENGLEZĂ
BBA
FARMACIE
Următoarea comandă va stoca comanda „wc” pentru a număra numărul total de linii ale fișierului, departament.txt la variabilă, $ mycommand.
$ mycommand = "wc -l departament.txt"Următoarea comandă „eval” va rula comanda „wc” și va imprima numărul total de linii.
$ eval $ mycommandIeșire:
Ieșirea arată că departament.txt fișierul are 6 linii.
Examplel-2: Executați comanda „expr” folosind „eval”
Creați un fișier bash numit cel mai înalt.SH și adăugați următorul script. Acest script va atribui două valori întregi variabilei $ x și $ y. Comenzile „expr” și „echo” sunt atribuite în două variabile, $ c1 și $ c2 care sunt executate ulterior folosind comanda „eval”.
cel mai înalt.SH
#!/ bin / bash#Inițializați variabila x și y
x = 5
y = 15
# Prima variabilă de comandă este utilizată pentru a atribui comanda „expr” pentru a adăuga valorile $ x și $ y
c1 = "'expr $ x + $ y'"
# A doua variabilă de comandă este utilizată pentru a atribui comanda „ecou”
c2 = "ecou"
# „eval” va calcula și imprima suma de $ x și $ y executând comenzile $ c1
și variabile $ c2
eval $ c2 $ c1
Rulați scriptul.
$ bash cel mai înalt.SHSuma de 5 și 15 este 20, care este afișat în ieșire.
Exemplu-3: Imprimați valoarea unei variabile care este alocată într-o altă variabilă
Creați un script bash numit evaltest2.sh cu următorul script. Aici, o variabilă este utilizată pentru a atribui numele altei variabile care conține un șir de date. Comanda „eval” va imprima valoarea conținutului variabilei care conține numele altei variabile.
evaltest2.SH
#!/ bin / bash# Atribuiți o valoare șir variabilei, $ str1
str1 = "Script Shell"
# Atribuiți numele variabilei, „str1” variabilei $ str2
str2 = str1
# Stocați comanda în variabilă, comanda $
comanda = "ecou"
# Comanda „eval” va executa comanda „echo” și va imprima valoarea variabilei
care conține într-o altă variabilă
comanda eval $ \ $ $ str2
Rulați scriptul.
$ bash evaltest2.SHSe imprimă valoarea variabilei, $ str1.
Există o altă modalitate de a accesa valoarea unei variabile care nume este valoarea unei alte variabile. Folosind „!simbolul se poate accesa valoarea acestui tip de variabilă. Următoarea comandă poate fi utilizată ca alternativă a scriptului anterior, iar ieșirea va fi aceeași.
$ str1 = "Script Shell"; str2 = str1; comanda = "ecou"; eval $ comanda $ !str2Exemplu-4: Creați o serie de variabile cu valori și calculați suma valorilor folosind comanda „eval”
Creați un script bash numit evaltest3.sh și adăugați următorul script. Acest script va crea o serie de variabile și va stoca valorile în variabile folosind comanda „eval”. Valorile variabilelor vor fi adăugate și stocate într-o variabilă numită $ sum. Apoi, comanda „echo” cu valori de șir este atribuită unei variabile care este utilizată în comanda „eval” pentru a imprima valoarea variabilei $ sum.
cel mai înalt3.SH
#!/ bin / bash# Inițializați variabila $ sum cu valoarea 0
sumă = 0
# Declarați o buclă for care va itera de 4 ori
pentru n în 1 ... 4
do
# Creați patru variabile folosind comanda eval
eval x $ n = $ n
# Adăugați valorile variabilei cu suma $
sum = $ (($ sum + $ x $ n))
Terminat
# Atribuiți comanda „echo” cu șir într-o variabilă
command = "echo 'Rezultatul sumei ='"
Comanda # 'eval' tipărește suma sumelor folosind variabile
eval $ comanda $ sum
Rulați scriptul.
$ bash evaltest3.SHSuma celor patru variabile este, 1 + 2 + 3 + 4 = 10 care este tipărită.
Exemplu-5: Utilizarea comenzii „eval” pentru a elimina lista de fișiere
Creați un fișier bash numit evaltest4.sh cu următorul script. Acest script va citi trei argumente din linia de comandă ca nume de fișiere care vor fi eliminate și vor stoca valorile argumentelor într-o variabilă matrice, $ fn. Comanda 'rm' este stocată într-o variabilă, comanda $. Bucla For este declarată aici pentru a prelua fiecare nume de fișier și a elimina fișierul folosind comanda „eval” dacă fișierul există.
cel mai înalt4.SH
#!/ bin / bash# Declarați o matrice
declara -A fn
# Citiți trei argumente din linia de comandă și stocați-le în trei indexuri ale matricei
fn [0] = $ 1
fn [1] = 2 USD
fn [2] = 3 USD
# Stocați comanda remove într-o variabilă
comanda = "rm"
# for loop va itera de trei ori pentru a citi trei elemente de matrice
pentru index în 0 1 2
do
# Verificați dacă fișierul există sau nu
dacă [[-f $ fn [$ index]]]; atunci
# dacă fișierul există, atunci eliminați fișierul
comanda eval $ $ fn [$ index]
# Informați utilizatorul că fișierul este eliminat
ecoul „$ fn [$ index] este șters."
Altfel
#Informați utilizatorului că fișierul nu există
ecou „$ fn [$ index] nu există."
fi
Terminat
Rulați scriptul.
$ bash evaltest4.marcaje sh.element docx.produs txt.docxAici sunt furnizate trei nume de fișiere în momentul executării scriptului. Ieșirea arată că marchează.docx și produs.docx există în locația curentă și fișierele sunt eliminate și, element.txt nu există în locația curentă.
Concluzie
Orice comandă bash poate fi executată prin comanda „eval” declarând ca un șir. Comanda „eval” este utilizată în acest tutorial pentru executarea diferitelor comenzi încorporate din bash și crearea unei serii de variabile. Utilizările comenzii „eval” vor fi șterse pentru utilizatori și vor putea folosi această comandă în diverse scopuri după ce au citit acest tutorial.