Comenzi Linux

Comanda Bash eval

Comanda Bash eval
Comanda „eval” este utilizată în bash pentru a executa argumente precum o comandă shell. Argumentele sunt unite într-un șir și luate ca intrare pentru comanda shell pentru a executa comanda. „eval” execută comanda în shell-ul curent. Această comandă este utilă atunci când necesită executarea oricărei comenzi care conține un operator special sau cuvinte cheie rezervate. Această comandă poate fi utilizată în orice script și în cazul în care numele variabilei este necunoscut până la executarea scriptului. Acest tutorial îi va ajuta pe utilizatorii Linux să învețe utilizarea acestei comenzi.

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

CSE
EEE
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 $ mycommand

Ieș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.SH

Suma 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.SH

Se 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 $ !str2

Exemplu-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.SH

Suma 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.docx

Aici 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.

How to download and Play Sid Meier's Civilization VI on Linux
Introduction to the game Civilization 6 is a modern take on the classic concept introduced in the series of the Age of Empires games. The idea was fai...
How to Install and Play Doom on Linux
Introduction to Doom The Doom Series originated in the 90s after the release of the original Doom. It was an instant hit and from that time onwards th...
Vulkan for Linux Users
With each new generation of graphics cards, we see game developers push the limits of graphical fidelity and come one step closer to photorealism. But...