Ukazi za Linux

Bash eval ukaz

Bash eval ukaz
Ukaz 'eval' se v bash uporablja za izvajanje argumentov kot ukaz lupine. Argumenti so združeni v nizu in jemljejo kot vhod za ukaz lupine za izvedbo ukaza. 'eval' izvrši ukaz v trenutni lupini. Ta ukaz je uporaben, kadar zahteva izvajanje katerega koli ukaza, ki vsebuje poseben operator ali rezervirane ključne besede. Ta ukaz se lahko uporablja v katerem koli skriptu, tudi če ime spremenljivke ni znano, dokler se skript ne zažene. Ta vadnica bo uporabnikom Linuxa pomagala pri učenju uporabe tega ukaza.

Sintaksa:

eval [argument…]

Tu so argumenti razčlenjeni in združeni v niz, ki ga bo izvedla lupina. 'eval' po izvedbi ukaza vrne kodo stanja izhoda. 'eval' vrne 0 kot kodo stanja izhoda, če ni naveden noben argument ali je naveden samo ničelni argument.

Primer-1: Izvedite ukaz 'wc' z uporabo 'eval'

Recimo, da je besedilna datoteka z imenom »oddelek.txt"Vsebuje naslednje besedilo. Skupno število vrstic datoteke lahko preštejemo z ukazom 'wc'.

oddelek.txt

CSE
EEO
ETE
ANGLEŠČINA
BBA
LEKARNA

Naslednji ukaz bo shranil ukaz 'wc' za štetje skupnega števila vrstic datoteke, oddelek.txt na spremenljivko, $ moje ukaz.

$ mycommand = "wc -l oddelek.txt "

Naslednji ukaz 'eval' bo zagnal ukaz 'wc' in natisnil skupno število vrstic.

$ eval $ mycommand

Izhod:

Rezultat to kaže oddelek.txt datoteka ima 6 vrstic.

Examplel-2: Izvedite ukaz 'expr' z uporabo 'eval'

Ustvari bash datoteko z imenom evaltest.sh in dodajte naslednji skript. Ta skript bo spremenljivkama $ x in $ y dodelil dve celoštevilski vrednosti. Ukaza 'expr' in 'echo' sta dodeljena dvema spremenljivkama $ c1 in $ c2, ki se kasneje izvedeta z ukazom 'eval'.

evaltest.sh

#!/ bin / bash
# Inicializirajte spremenljivki x in y
x = 5
y = 15
# Prva spremenljivka ukaza se uporablja za dodelitev ukaza 'expr' za dodajanje vrednosti $ x in $ y
c1 = "'izraz $ x + $ y'"
# Druga spremenljivka ukaza se uporablja za dodelitev ukaza 'echo'
c2 = "odmev"
# 'eval' bo izračunal in natisnil vsoto $ x in $ y z izvajanjem ukazov $ c1
in $ c2 spremenljivki
eval $ c2 $ c1

Zaženite skript.

$ bash evaltest.sh

Vsota 5 in 15 je 20, ki je prikazana v izhodu.

Primer-3: Natisnite vrednost spremenljivke, ki je dodeljena drugi spremenljivki

Ustvarite bash skript z imenom evaltest2.sh z naslednjim skriptom. Tu se ena spremenljivka uporabi za dodelitev imena druge spremenljivke, ki vsebuje nizovne podatke. Ukaz 'eval' bo natisnil vrednost spremenljivke, ki vsebuje ime druge spremenljivke kot vsebino.

evaltest2.sh

#!/ bin / bash
# Spremenljivki dodelite vrednost niza, $ str1
str1 = "Skript lupine"
# Spremenljivki $ str2 dodelite ime spremenljivke, “str1”
str2 = str1
# Ukaz shranite v spremenljivko $ command
command = "echo"
Ukaz # 'eval' bo izvedel ukaz 'echo' in natisnil vrednost spremenljivke
ki vsebuje drugo spremenljivko
eval $ command \ $ $ str2

Zaženite skript.

$ bash evaltest2.sh

Natisne se vrednost spremenljivke $ str1.

Obstaja še en način dostopa do vrednosti spremenljivke, katere ime je vrednost druge spremenljivke. Uporaba!'simbol je mogoče dostopati do vrednosti te vrste spremenljivke. Naslednji ukaz lahko uporabimo kot alternativo prejšnjemu skriptu in rezultat bo enak.

$ str1 = "Skript lupine"; str2 = str1; ukaz = "odmev"; eval $ command $ !str2

Primer-4: Ustvari vrsto spremenljivk z vrednostmi in izračunaj vsoto vrednosti z ukazom 'eval'

Ustvarite bash skript z imenom evaltest3.sh in dodajte naslednji skript. Ta skript bo ustvaril vrsto spremenljivk in shranil vrednosti v spremenljivke z ukazom 'eval'. Vrednosti spremenljivk bodo dodane in shranjene v spremenljivko z imenom $ sum. Nato je ukaz 'echo' z vrednostmi niza dodeljen spremenljivki, ki se uporablja v ukazu 'eval' za tiskanje vrednosti spremenljivke $ sum.

evaltest3.sh

#!/ bin / bash
# Spremenljivko $ sum inicializirajte z vrednostjo 0
vsota = 0
# Navedite zanko for, ki se bo ponavljala 4-krat
za n v 1… 4
naredi
# Z ukazom eval ustvarite štiri spremenljivke
eval x $ n = $ n
# Vrednosti spremenljivke dodajte z vsoto $
vsota = $ (($ vsota + $ x $ n))
Končano
# Ukaz 'echo' z nizom dodelite spremenljivki
command = "echo 'Rezultat vsote ='"
Ukaz # 'eval' natisne vrednost vsote z uporabo spremenljivk
eval $ command $ sum

Zaženite skript.

$ bash evaltest3.sh

Vsota štirih spremenljivk je 1 + 2 + 3 + 4 = 10, ki je natisnjena.

Primer 5: Uporaba ukaza 'eval' za odstranitev seznama datotek

Ustvarite bash datoteko z imenom evaltest4.sh z naslednjim skriptom. Ta skript bo prebral tri argumente ukazne vrstice kot imena datotek, ki bodo odstranjena, in shranil vrednosti argumentov v spremenljivko polja, $ fn. Ukaz 'rm' je shranjen v spremenljivki $ command. Tu je razglašena zanka For, da pridobi vsako ime datoteke in jo odstrani z ukazom 'eval', če datoteka obstaja.

evaltest4.sh

#!/ bin / bash
# Razglasite polje
prijavi -A fn
# Preberite tri argumente ukazne vrstice in shranite v tri indekse polja
fn [0] = 1 USD
fn [1] = 2 USD
fn [2] = 3 USD
# Ukaz za odstranitev shranite v spremenljivko
command = "rm"
# for se bo trikrat ponovila, da bo prebrala tri elemente matrike
za indeks v 0 1 2
naredi
# Preverite, ali datoteka obstaja ali ne obstaja
če [[-f $ fn [$ index]]]; potem
# če datoteka obstaja, jo odstranite
eval $ command $ fn [$ index]
# Obvestite uporabnika, da je datoteka odstranjena
echo "$ fn [$ index] je izbrisan."
Drugače
# Obvestite uporabnika, da datoteka ne obstaja
echo "$ fn [$ index] ne obstaja."
fi
Končano

Zaženite skript.

$ bash evaltest4.sh oznake.docx element.txt izdelek.docx

Tu so med izvajanjem skripta navedena tri imena datotek. Izhod kaže, da označuje.docx in izdelek.docx obstajajo na trenutni lokaciji in datoteke se odstranijo in.txt na trenutni lokaciji ne obstaja.

Zaključek

Vsak ukaz bash lahko izvedete z ukazom 'eval', tako da ga prijavite kot niz. ukaz 'eval' se v tej vadnici uporablja za izvajanje različnih vgrajenih ukazov bash in ustvarjanje niza spremenljivk. Uporabniki ukaza 'eval' bodo za uporabnike izbrisani in bodo lahko ta ukaz uporabili za različne namene po branju te vadnice.

Kako uporabljati GameConqueror Cheat Engine v Linuxu
Članek zajema vodnik o uporabi varalnice GameConqueror v Linuxu. Številni uporabniki, ki igrajo igre v sistemu Windows, pogosto uporabljajo aplikacijo...
Najboljši emulatorji igralne konzole za Linux
V tem članku bo navedena priljubljena programska oprema za emulacijo igralne konzole, ki je na voljo za Linux. Emulacija je sloj združljivosti program...
Najboljši Linux Distros za igre na srečo v letu 2021
Operacijski sistem Linux je daleč od prvotnega, preprostega, strežniškega videza. Ta OS se je v zadnjih letih izjemno izboljšal in se je zdaj razvil v...