Comanda Bash eval

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

Sintaxa:

eval

Aici, argumentele sunt analizate și combinate într-un șir de caractere care va fi executat de shell. `eval` returnează un cod de stare de ieșire după executarea comenzii. `eval` returnează 0 ca și cod de stare de ieșire dacă nu este furnizat nici un argument sau dacă este furnizat doar un argument nul.

Exemplu-1: Executarea comenzii `wc` folosind `eval`

Supunem că un fișier text numit „department.txt” conține următorul text. Numărul total de linii ale fișierului poate fi numărat cu ajutorul comenzii `wc`.

departament.txt

CSE
EEE
ETE
ENGLEZĂ
BBA
FARMACIE

Comenda următoare va stoca comanda `wc` pentru a număra numărul total de linii din fișierul, department.txt în variabila, $mycommand.

$ mycommand=”wc -l department.txt”

Comenda `eval` următoare va rula comanda `wc` și va imprima numărul total de linii.

$ eval $mycommand

Succes:

Succesul arată că department.txt are 6 linii.

Exemplu-2: Executarea comenzii `expr` folosind `eval`

Creați un fișier bash numit evaltest.sh și adăugați următorul script. Acest script va atribui două valori întregi în variabilele $x și $y. Comenzile `expr` și `echo` sunt atribuite în două variabile, $c1 și $c2, care sunt executate ulterior cu ajutorul comenzii `eval`.

evaltest.sh

#!/bin/bash
#Initializează variabilele x și y
x=5
y=15
#Prima variabilă a comenzii este folosită pentru a atribui comanda `expr` pentru a aduna valorile lui $x și $y
c1=”`expr $x + $y`”
#Cea de-a doua comandă este utilizată pentru a atribui comanda `echo`
c2=”echo”
#`eval` va calcula și va imprima suma dintre $x și $y prin executarea comenzilor din variabilele $c1
și $c2
eval $c2 $c1

Executați scriptul.

$ bash evaltest.sh

Suma dintre 5 și 15 este 20 care este afișată în ieșire.

Exemplu-3: Tipăriți valoarea unei variabile care este atribuită î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 unei alte variabile care conține un șir de date. Comanda `eval` va imprima valoarea variabilei care conține numele altei variabile ca și conținut.

evaltest2.sh

#!/bin/bash
# Atribuie o valoare de șir de caractere în variabila $str1
str1=”Shell Script”
# Atribuie numele variabilei „str1” variabilei $str2
str2=str1
#Stochează comanda în variabilă, $comandă
comandă=”echo”
# Comanda `eval` va executa comanda `echo` și va imprima valoarea variabilei
care conține într-o altă variabilă
eval $comandă \${$str2}

Executați scriptul.

$ bash evaltest2.sh

Se tipărește valoarea variabilei, $str1.

Există o altă modalitate de a accesa valoarea unei variabile al cărei nume este valoarea unei alte variabile. Cu ajutorul simbolului ‘!’ se poate accesa valoarea acestui tip de variabilă. Următoarea comandă poate fi utilizată ca o alternativă a scriptului anterior, iar rezultatul va fi același.

$ str1=”Shell Script”; str2=str1; command=”echo”; eval $comandă ${!str2}

Exemplu-4: Creați o serie de variabile cu valori și calculați suma valorilor cu ajutorul comenzii `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 tip șir de caractere este atribuită într-o variabilă care este utilizată în comanda `eval` pentru a imprima valoarea variabilei $sum.

evaltest3.sh

#!/bin/bash
# Inițializează variabila $sum cu valoarea 0
sum=0
# Declară 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 $sum
sum=$(($sum+$x$n))
done
# Atribuiți comanda `echo`. cu șirul într-o variabilă
comandă=”echo ‘Rezultatul sumei='”
# comanda `eval` tipărește valoarea sumei folosind variabilele
eval $comandă $sum

Executaț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

Crearea unui fișier bash numit evaltest4.sh cu următorul script. Acest script va citi trei argumente de la linia de comandă ca nume de fișiere care vor fi eliminate și va stoca valorile argumentelor într-o variabilă de tip array, $fn. Comanda `rm’ este stocată într-o variabilă, $command. 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ă.

evaltest4.sh

#!/bin/bash
#Declară o matrice
declare -A fn
# Citește trei argumente din linia de comandă și le stochează în trei indici ai tabloului
fn=$1
fn=$2
fn=$3
# Stochează comanda de eliminare într-o variabilă
comandă=”rm”
# bucla for va itera de trei ori pentru a citi trei elemente ale tabloului
for index in 0 1 2
do
# Verifică dacă fișierul există sau nu
if } ]]]; then
# dacă fișierul există, atunci elimină fișierul
eval $command ${fn}
# Informează utilizatorul că fișierul este eliminat
echo „${fn} este șters.”
Else
#Informează utilizatorul că fișierul nu există
echo „${fn} nu există.”
fi
done

Executați scriptul.

$ bash evaltest4.sh marks.docx item.txt product.docx

În acest caz, în momentul executării scriptului sunt furnizate trei nume de fișiere. Ieșirea arată că marks.docx și product.docx există în locația curentă și fișierele sunt eliminate și, item.txt nu există în locația curentă.

Concluzie

Orice comandă bash poate fi executată de comanda `eval` prin declararea ca un șir de caractere. Comanda `eval` este utilizată în acest tutorial pentru a executa diferite comenzi încorporate în bash și pentru a crea o serie de variabile. Utilizările comenzii `eval` vor fi clarificate pentru utilizatori și aceștia vor putea utiliza această comandă în diverse scopuri după ce vor citi acest tutorial.

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.