Linuxi käsud

Bash eval käsk

Bash eval käsk
'eval' käsku kasutatakse bashis argumentide käivitamiseks nagu shellikäsk. Argumendid ühendatakse stringina ja neid võetakse käsu shell käivitamiseks käsu täitmiseks. 'eval' täidab käsu praeguses kestas. See käsk on kasulik, kui see nõuab kõigi käskude käivitamist, mis sisaldavad spetsiaalset operaatorit või reserveeritud märksõnu. Seda käsku saab kasutada igas skriptis ka juhul, kui muutuja nimi pole enne skripti käivitamist teada. See õpetus aitab Linuxi kasutajatel selle käsu kasutamist õppida.

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

CSE
EEE
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 $ mycommand

Vä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.sh

5 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.sh

Trü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 $ !str2

Nä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.sh

Nelja 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.docx

Siin 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.

Parimad Linuxi käsurea mängud
Käsurida pole Linuxi kasutamisel lihtsalt teie suurim liitlane - see võib olla ka meelelahutusallikas, sest saate seda kasutada paljude lõbusate mängu...
Parimad Linuxi mängupuldi kaardistamise rakendused
Kui teile meeldib mängida Linuxis mänge tavalise klaviatuuri ja hiire sisestussüsteemi asemel mängupuldiga, on teie jaoks mõned kasulikud rakendused. ...
Kasulikud tööriistad Linuxi mängijatele
Kui teile meeldib Linuxis mänge mängida, on tõenäoline, et olete mängukogemuse parandamiseks kasutanud selliseid rakendusi ja utiliite nagu Wine, Lutr...