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
CSEEEO
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 $ mycommandIzhod:
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.shVsota 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.shNatisne 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 $ !str2Primer-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.shVsota š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.docxTu 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.