Syntax:
eval [argument ...]Tu sa argumenty analyzujú a skombinujú do reťazca, ktorý vykoná shell. 'eval' vráti po vykonaní príkazu stavový kód ukončenia. 'eval' vráti 0 ako stavový kód ukončenia, ak nie je uvedený žiadny argument alebo je poskytnutý iba nulový argument.
Príklad-1: Vykonajte príkaz 'wc' pomocou príkazu 'eval'
Predpokladajme, že textový súbor s názvom „oddelenie.TXT”Obsahuje nasledujúci text. Celkový počet riadkov súboru možno spočítať pomocou príkazu „wc“.
oddelenie.TXT
CSEEEE
ETE
ANGLIČTINA
BBA
LEKÁREŇ
Nasledujúci príkaz uloží príkaz „wc“ na spočítanie celkového počtu riadkov súboru, oddelenie.TXT do premennej, $ môj príkaz.
$ mycommand = "wc -l oddelenie.TXT"Nasledujúci príkaz „eval“ spustí príkaz „wc“ a vytlačí celkový počet riadkov.
$ eval $ môj príkazVýkon:
Výstup to ukazuje oddelenie.TXT súbor má 6 riadkov.
Examplel-2: Vykonajte príkaz 'expr' pomocou 'eval'
Vytvorte bash súbor s názvom evaltest.š a pridajte nasledujúci skript. Tento skript priradí dve celočíselné hodnoty do premenných $ x a $ y. Príkazy „expr“ a „echo“ sú priradené do dvoch premenných, $ c1 a $ c2, ktoré sa vykonajú neskôr pomocou príkazu „eval“.
evaltest.š
#!/ bin / bash# Inicializujte premenné x a y
x = 5
y = 15
# Prvá premenná príkazu sa používa na priradenie príkazu „expr“ na pridanie hodnôt $ x a $ y
c1 = "'expr $ x + $ y'"
# Druhá premenná príkazu sa používa na priradenie príkazu „echo“
c2 = "ozvena"
# 'eval' vypočíta a vytlačí súčet $ x a $ y vykonaním príkazov $ c1
a $ c2 premenné
eval $ c2 $ c1
Spustite skript.
$ bash evaltest.šSúčet 5 a 15 je 20, ktoré sa zobrazia na výstupe.
Príklad-3: Vytlačte hodnotu premennej, ktorá je priradená k inej premennej
Vytvorte bash skript s názvom evaltest2.sh s nasledujúcim skriptom. Tu sa jedna premenná používa na priradenie názvu inej premennej, ktorá obsahuje údaje reťazca. Príkaz 'eval' vytlačí ako obsah hodnotu premennej, ktorá obsahuje názov inej premennej.
evaltest2.š
#!/ bin / bash# Priraďte hodnotu reťazca do premennej $ str1
str1 = "Shell Script"
# Priraďte premennej $ str2 názov premennej „str1“
str2 = str1
# Uložte príkaz do premennej, príkaz $
command = "echo"
Príkaz # 'eval' vykoná príkaz 'echo' a vytlačí hodnotu premennej
ktorý obsahuje v inej premennej
eval $ príkaz \ $ $ str2
Spustite skript.
$ bash evaltest2.šVytlačí sa hodnota premennej $ str1.
Existuje iný spôsob prístupu k hodnote premennej, ktorej názov je hodnotou inej premennej. Použitím '!symbol „je možné získať hodnotu tohto typu premennej. Nasledujúci príkaz je možné použiť ako alternatívu k predchádzajúcemu skriptu a výstup bude rovnaký.
$ str1 = "Shell Script"; str2 = str1; command = "echo"; eval $ príkaz $ !str2Príklad-4: Vytvorte sériu premenných s hodnotami a pomocou príkazu 'eval' vypočítajte súčet hodnôt
Vytvorte bash skript s názvom evaltest3.sh a pridajte nasledujúci skript. Tento skript vytvorí sériu premenných a hodnoty uloží do premenných pomocou príkazu 'eval'. Hodnoty premenných sa sčítajú a uložia do premennej s názvom $ sum. Ďalej je príkaz 'echo' s hodnotami reťazca priradený do premennej, ktorá sa používa v príkaze 'eval' na tlač hodnoty premennej $ sum.
evaltest3.š
#!/ bin / bash# Inicializujte premennú $ suma na hodnotu 0
súčet = 0
# Deklarujte cyklus for, ktorý bude iterovať štyrikrát
pre n v 1… 4
robiť
# Vytvorte štyri premenné pomocou príkazu eval
eval x $ n = $ n
# Pridajte hodnoty premennej s sumou $
suma = $ (($ suma + $ x $ n))
hotový
# Priraďte príkaz 'echo' s reťazcom do premennej
command = "echo 'Výsledok súčtu ='"
Príkaz # 'eval' vypíše celkovú hodnotu pomocou premenných
eval $ príkaz $ suma
Spustite skript.
$ bash evaltest3.šSúčet štyroch premenných je 1 + 2 + 3 + 4 = 10, ktoré sa vytlačia.
Príklad-5: Príkazom „eval“ odstránite zoznam súborov
Vytvorte bash súbor s názvom evaltest4.sh s nasledujúcim skriptom. Tento skript načíta tri argumenty príkazového riadku ako názvy súborov, ktoré sa odstránia, a uloží hodnoty argumentov do premennej poľa, $ fn. Príkaz 'rm' je uložený v premennej, príkaz $. Je tu deklarovaná slučka for, aby sa získalo každé meno súboru a odstránil súbor pomocou príkazu 'eval', ak súbor existuje.
evaltest4.š
#!/ bin / bash# Deklarovať pole
vyhlásiť -A fn
# Prečítajte si tri argumenty príkazového riadku a uložte ich do troch indexov poľa
fn [0] = 1 USD
fn [1] = 2 USD
fn [2] = 3 USD
# Uložte príkaz remove do premennej
príkaz = "rm"
# for bude trikrát iterovať, aby prečítal tri prvky poľa
pre index v 0 1 2
robiť
# Skontrolujte, či súbor existuje alebo neexistuje
if [[-f $ fn [$ index]]]; potom
# ak súbor existuje, odstráňte ho
eval $ príkaz $ fn [$ index]
# Informujte používateľa, že súbor bol odstránený
echo "$ fn [$ index] je odstránené.„
Inak
#Informujte používateľa, že súbor neexistuje
echo "$ fn [$ index] neexistuje.„
fi
hotový
Spustite skript.
$ bash evaltest4.značky sh.položka docx.produkt txt.docxTu sú v čase vykonania skriptu poskytnuté tri názvy súborov. Výstup ukazuje, že značky.docx a produkt.docx existujú v aktuálnom umiestnení a súbory sú odstránené a položka.txt v aktuálnom umiestnení neexistuje.
Záver
Akýkoľvek príkaz bash je možné vykonať príkazom 'eval' vyhlásením za reťazec. Príkaz 'eval' sa v tomto výučbe používa na vykonávanie rôznych vstavaných príkazov bash a vytváranie sérií premenných. Používanie príkazu „eval“ bude používateľom vymazané a po prečítaní tohto tutoriálu budú môcť tento príkaz používať na rôzne účely.