Linux naredbe

Bash eval naredba

Bash eval naredba
Naredba 'eval' koristi se u bashu za izvršavanje argumenata poput naredbe ljuske. Argumenti su spojeni u niz i uzeti kao ulaz za naredbu ljuske za izvršavanje naredbe. 'eval' izvršava naredbu u trenutnoj ljusci. Ova je naredba korisna kada zahtijeva izvršavanje bilo koje naredbe koja sadrži posebni operator ili rezervirane ključne riječi. Ova se naredba može koristiti u bilo kojoj skripti, također tamo gdje je ime varijable nepoznato do izvršavanja skripte. Ovaj vodič pomoći će korisnicima Linuxa da nauče koristiti ovu naredbu.

Sintaksa:

eval [argument ...]

Ovdje se argumenti raščlanjuju i kombiniraju u niz koji će izvršiti ljuska. 'eval' vraća izlazni statusni kôd nakon izvršavanja naredbe. 'eval' vraća 0 kao izlazni statusni status ako nije naveden nijedan argument ili je naveden samo nulti argument.

Primjer-1: Izvršite naredbu 'wc' pomoću 'eval'

Pretpostavimo da postoji tekstualna datoteka s nazivom „odjel.txt”Sadrži sljedeći tekst. Ukupan broj redaka datoteke može se izbrojiti naredbom 'wc'.

odjel.txt

CSE
EEE
ETE
ENGLESKI
BBA
LJEKARNA

Sljedeća naredba pohranit će naredbu 'wc' za brojanje ukupnog broja redaka datoteke, odjel.txt na varijablu, $ moja naredba.

$ mycommand = "wc -l odjel.txt "

Sljedeća naredba 'eval' pokrenut će naredbu 'wc' i ispisati ukupan broj redaka.

$ eval $ moj naredba

Izlaz:

Izlaz to pokazuje odjel.txt datoteka ima 6 redaka.

Primjerl-2: Izvršite naredbu 'expr' pomoću 'eval'

Stvorite bash datoteku s imenom evaltest.sh i dodajte sljedeću skriptu. Ova će skripta dodijeliti dvije cjelobrojne vrijednosti varijablama $ x i $ y. Naredbe 'expr' i 'echo' dodjeljuju se u dvije varijable, $ c1 i $ c2, koje se kasnije izvršavaju pomoću naredbe 'eval'.

evaltest.sh

#!/ bin / bash
# Inicijalizirajte varijablu x i y
x = 5
y = 15
#Prva varijabla naredbe koristi se za dodjeljivanje naredbe 'expr' za dodavanje vrijednosti $ x i $ y
c1 = "'izraz $ x + $ y'"
# Druga varijabla naredbe koristi se za dodjeljivanje naredbe 'echo'
c2 = "odjek"
# 'eval' će izračunati i ispisati zbroj $ x i $ y izvršavanjem naredbi $ c1
i $ c2 varijable
eval $ c2 $ c1

Pokrenite skriptu.

$ bash evaltest.sh

Zbroj 5 i 15 je 20 koji je prikazan u izlazu.

Primjer-3: Ispis vrijednosti varijable koja je dodijeljena drugoj varijabli

Stvorite bash skriptu nazvanu evaltest2.sh sa sljedećom skriptom. Ovdje se jedna varijabla koristi za dodjeljivanje imena drugoj varijabli koja sadrži niz podataka. naredba 'eval' ispisat će vrijednost varijable koja sadrži ime druge varijable kao sadržaj.

evaltest2.sh

#!/ bin / bash
# Dodijelite vrijednost nizu varijabli, $ str1
str1 = "Skripta školjke"
# Dodijelite naziv varijable, "str1" varijabli $ str2
str2 = str1
# Spremite naredbu u varijablu $ command
naredba = "eho"
Naredba # 'eval' izvršit će naredbu 'echo' i ispisati vrijednost varijable
koja sadrži drugu varijablu
eval $ command \ $ $ str2

Pokrenite skriptu.

$ bash evaltest2.sh

Ispisuje se vrijednost varijable $ str1.

Postoji još jedan način za pristup vrijednosti varijable čiji je naziv vrijednost druge varijable. Korištenje '!'simbolu može se pristupiti vrijednosti ove vrste varijable. Sljedeća naredba može se koristiti kao alternativa prethodnoj skripti i izlaz će biti isti.

$ str1 = "Skripta školjke"; str2 = str1; naredba = "eho"; eval $ command $ !str2

Primjer-4: Stvorite niz varijabli s vrijednostima i izračunajte zbroj vrijednosti pomoću naredbe 'eval'

Stvorite bash skriptu nazvanu evaltest3.sh i dodajte sljedeću skriptu. Ova će skripta stvoriti niz varijabli i pohraniti vrijednosti u varijable pomoću naredbe 'eval'. Vrijednosti varijabli bit će dodane i pohranjene u varijablu nazvanu $ sum. Dalje, naredba 'echo' s vrijednim nizovima dodjeljuje se varijabli koja se koristi u naredbi 'eval' za ispis vrijednosti varijable $ sum.

evaltest3.sh

#!/ bin / bash
# Inicijalizirajte varijablu $ sum vrijednošću 0
zbroj = 0
# Proglasite for petlju koja će se ponavljati 4 puta
za n u 1… 4
čini
# Stvorite četiri varijable pomoću naredbe eval
eval x $ n = $ n
# Dodajte vrijednosti varijable s $ sum
zbroj = $ (($ zbroj + $ x $ n))
gotovo
# Dodijelite naredbu 'echo' s nizom u varijablu
command = "echo 'Rezultat zbroja ='"
naredba # 'eval' ispisuje vrijednost zbroja pomoću varijabli
eval $ command $ sum

Pokrenite skriptu.

$ bash evaltest3.sh

Zbroj četiriju varijabli je 1 + 2 + 3 + 4 = 10 koja se ispisuje.

Primjer 5: Korištenje naredbe 'eval' za uklanjanje popisa datoteka

Stvorite bash datoteku koja se zove evaltest4.sh sa sljedećom skriptom. Ova će skripta čitati tri argumenta naredbenog retka kao imena datoteka koja će se ukloniti i pohraniti vrijednosti argumenata u varijablu niza, $ fn. 'rm' naredba pohranjena je u varijablu $ command. Ovdje se deklarira petlja For za dohvaćanje svakog imena datoteke i uklanjanje datoteke pomoću naredbe 'eval' ako datoteka postoji.

evaltest4.sh

#!/ bin / bash
# Izjavite niz
izjaviti -A fn
# Pročitajte tri argumenta naredbenog retka i spremite u tri indeksa niza
fn [0] = 1 USD
fn [1] = 2 USD
fn [2] = 3 dolara
# Spremite naredbu remove u varijablu
naredba = "rm"
Petlja # za ponovit će se tri puta kako bi pročitala tri elementa niza
za indeks u 0 1 2
čini
# Provjerite postoji li datoteka ili ne postoji
ako [[-f $ fn [$ index]]]; zatim
# ako datoteka postoji, uklonite je
eval $ naredba $ fn [$ index]
# Obavijestite korisnika da je datoteka uklonjena
echo "$ fn [$ index] se briše."
Drugo
# Obavijestite korisnika da datoteka ne postoji
echo "$ fn [$ index] ne postoji."
fi
gotovo

Pokrenite skriptu.

$ bash evaltest4.sh oznake.stavka docx.txt proizvod.docx

Ovdje su navedena tri imena datoteka u vrijeme izvršavanja skripte. Izlaz pokazuje da označava.docx i proizvod.docx postoje na trenutnom mjestu i datoteke se uklanjaju i, item.txt ne postoji na trenutnom mjestu.

Zaključak

Bilo koja naredba bash može se izvršiti naredbom 'eval' deklariranjem kao niz. naredba 'eval' koristi se u ovom vodiču za izvršavanje različitih ugrađenih naredbi basha i stvaranje niza varijabli. Korisnici naredbe 'eval' bit će izbrisani za korisnike i moći će je koristiti u razne svrhe nakon čitanja ovog vodiča.

5 najboljih arkadnih igara za Linux
U današnje vrijeme računala su ozbiljni strojevi koji se koriste za igre na sreću. Ako ne uspijete dobiti novi visoki rezultat, znat ćete na što misli...
Bitka za Wesnoth 1.13.6 Razvoj objavljen
Bitka za Wesnoth 1.13.6 objavljeno prošlog mjeseca, šesto je razvojno izdanje u izdanju 1.13.x series i donosi niz poboljšanja, ponajviše korisničkog ...
Kako instalirati League Of Legends na Ubuntu 14.04
Ako ste ljubitelj League of Legends, ovo je prilika za vas da testirate League of Legends. Imajte na umu da je LOL podržan na PlayOnLinux ako ste kori...