Süntaks:
eval [argument…]Siin analüüsitakse argumente ja ühendatakse need stringiks, mille käivitab kest. 'eval' tagastab pärast käsu täitmist väljumisolekukoodi. 'eval' tagastab väljumisolekukoodina 0, kui argumenti pole esitatud või on esitatud ainult nullargument.
Näide 1: käivitage käsk 'wc' 'eval' abil
Oletame, et tekstifail nimega “osakond.txt”Sisaldab järgmist teksti. Faili ridade koguarvu saab lugeda käsuga 'wc'.
osakond.txt
CSEEEE
ETE
INGLISE
BBA
Apteek
Järgmine käsk salvestab käsu 'wc' faili koguarvude lugemiseks, osakond.txt muutujale, $ mycommand.
$ mycommand = "wc -l osakond.txt "Järgmine käsk eval käivitab käsu wc ja printib ridade koguarvu.
$ eval $ mycommandVäljund:
Väljund näitab seda osakond.txt failil on 6 rida.
Näide-2: käivitage käsk 'expr', kasutades 'eval'
Looge bash-fail nimega hinnatud.sh ja lisage järgmine skript. See skript määrab muutujatesse $ x ja $ y kaks täisarvu. 'Expr' ja 'echo' käsud määratakse kaheks muutujaks, $ c1 ja $ c2, mis käivitatakse hiljem käsuga 'eval'.
hinnatud.sh
#!/ bin / bash#Initsialiseerige muutuja x ja y
x = 5
y = 15
# Esimest käsu muutujat kasutatakse käsu 'expr' määramiseks, et lisada väärtused $ x ja $ y
c1 = "'expr $ x + $ y'"
# Teist käsu muutujat kasutatakse käsu 'kaja' määramiseks
c2 = "kaja"
# 'eval' arvutab ja prindib $ x ja $ y summa, täites käske $ c1
ja $ c2 muutujad
eval $ c2 $ c1
Käivitage skript.
$ bash evaltest.sh5 ja 15 summa on 20, mis kuvatakse väljundis.
Näide 3: printige teises muutujas määratud muutuja väärtus
Looge bash-skript nimega evaltest2.sh järgmise skriptiga. Siin kasutatakse ühte muutujat teise stringi andmeid sisaldava muutuja nime määramiseks. 'eval' käsk prindib selle muutuja väärtuse, mis sisaldab muu muutuja nime sisuna.
evaltest2.sh
#!/ bin / bash# Määrake muutujale stringi väärtus $ str1
str1 = "Kesta skript"
# Määrake muutuja nimi str1 muutujale $ str2
str2 = str1
#Salvesta käsk muutujasse $
käsk = "kaja"
# 'eval' käsk täidab käsu 'echo' ja prindib muutuja väärtuse
mis sisaldab teises muutujas
eval $ käsk \ $ $ str2
Käivitage skript.
$ bash evaltest2.shTrükitakse muutuja $ str1 väärtus.
Muutuja väärtusele pääsemiseks on veel üks viis, mille nimi on teise muutuja väärtus. Kasutamine!'sümbol seda tüüpi muutujate väärtusele pääseb juurde. Järgmist käsku saab kasutada eelmise skripti alternatiivina ja väljund on sama.
$ str1 = "Kesta skript"; str2 = str1; käsk = "kaja"; eval $ käsk $ !str2Näide 4: looge muutujate seeria koos väärtustega ja arvutage väärtuste summa käsuga 'eval'
Looge bash-skript nimega evaltest3.sh ja lisage järgmine skript. See skript loob rida muutujaid ja salvestab väärtused muutujatesse käsuga 'eval'. Muutujate väärtused lisatakse ja salvestatakse muutujaks nimega $ sum. Järgmisena määratakse stringiväärtustega käsk 'echo' muutujaks, mida kasutatakse käsu 'eval' abil muutuja $ sum väärtuse printimiseks.
evaltest3.sh
#!/ bin / bash# Initsialiseerige muutuja $ summa väärtusega 0
summa = 0
# Deklareerige for for loop, mis kordub 4 korda
n jaoks ajavahemikus 1… 4
tegema
# Loo neli muutujat käsu eval abil
eval x $ n = $ n
# Lisage muutuja väärtus $ sum
summa = $ (($ summa + $ x $ n))
tehtud
# Määrake stringiga käsk 'echo' muutujaks
command = "echo 'Summa ='" tulemus
Käsk # 'eval' printib summa väärtuse muutujate abil
eval $ käsk $ summa
Käivitage skript.
$ bash evaltest3.shNelja muutuja summa on 1 + 2 + 3 + 4 = 10, mis on prinditud.
Näide 5: Failide loendi eemaldamiseks käsu 'eval' kasutamine
Looge bash-fail nimega evaltest4.sh järgmise skriptiga. See skript loeb kolm käsurea argumenti failinimedena, mis eemaldatakse ja salvestavad argumendi väärtused massiivi muutujaks $ fn. 'rm' käsk on salvestatud muutujasse $ käsk. Sest silmus on siin deklareeritud iga failinime hankimiseks ja faili eemaldamiseks käsuga 'eval', kui fail on olemas.
evaltest4.sh
#!/ bin / bash#Deklareeri massiiv
deklareerima -A fn
# Lugege kolme käsurea argumenti ja salvestage massiivi kolme indeksisse
fn [0] = 1 dollar
fn [1] = 2 dollarit
fn [2] = 3 dollarit
# Salvestage käsk Remove muutujasse
käsk = "rm"
# for loop kordab kolme massiivi elemendi lugemiseks kolm korda
0 1 2 indeksi jaoks
tegema
# Kontrollige, kas fail on olemas või pole seda olemas
kui [[-f $ fn [$ index]]]; siis
# kui fail on olemas, siis eemaldage fail
eval $ käsk $ fn [$ index]
# Teavitage kasutajat, et fail on eemaldatud
kaja "$ fn [$ index] on kustutatud."
Muidu
# Teavitage kasutajat, et faili pole olemas
kaja "$ fn [$ index] pole olemas."
fi
tehtud
Käivitage skript.
$ bash evaltest4.sh märgid.docx-üksus.txt toode.docxSiin antakse skripti käivitamisel kolm failinime. Väljund näitab neid märke.docx ja toode.docx on praeguses asukohas olemas ja failid eemaldatakse ja, element.txt pole praeguses asukohas olemas.
Järeldus
Mis tahes bashi käsku saab käivitada käsuga „eval”, deklareerides stringina. käsku eval kasutatakse selles õpetuses erinevate bashi sisseehitatud käskude käivitamiseks ja muutujate seeria loomiseks. Kasutajate käsud 'eval' kustutatakse ja nad saavad pärast selle õpetuse lugemist seda käsku erinevatel eesmärkidel kasutada.