Syntax:
eval [argument…]Zde jsou argumenty analyzovány a kombinovány do řetězce, který provede shell. 'eval' po provedení příkazu vrátí stavový kód ukončení. 'eval' vrací 0 jako stavový kód ukončení, pokud není zadán žádný argument nebo je zadán pouze nulový argument.
Příklad-1: Proveďte příkaz 'wc' pomocí 'eval'
Předpokládejme textový soubor s názvem „oddělení.txt”Obsahuje následující text. Celkový počet řádků souboru lze spočítat pomocí příkazu 'wc'.
oddělení.txt
CSEEEE
ETE
ANGLIČTINA
BBA
LÉKÁRNA
Následující příkaz uloží příkaz 'wc', který spočítá celkový počet řádků souboru, oddělení.txt do proměnné, $ můj příkaz.
$ mycommand = "wc -l oddělení.txt "Následující příkaz 'eval' spustí příkaz 'wc' a vytiskne celkový počet řádků.
$ eval $ můj příkazVýstup:
Výstup ukazuje, že oddělení.txt soubor má 6 řádků.
Examplel-2: Proveďte příkaz 'expr' pomocí 'eval'
Vytvořte soubor bash s názvem evaltest.sh a přidejte následující skript. Tento skript přiřadí dvě celočíselné hodnoty do proměnných $ x a $ y. Příkazy 'expr' a 'echo' jsou přiřazeny do dvou proměnných, $ c1 a $ c2, které jsou provedeny později pomocí příkazu 'eval'.
evaltest.sh
#!/ bin / bash# Inicializujte proměnné xay
x = 5
y = 15
# První proměnná příkazu se používá k přiřazení příkazu 'expr' k přidání hodnot $ x a $ y
c1 = "'expr $ x + $ y'"
# Druhá proměnná příkazu se používá k přiřazení příkazu 'echo'
c2 = "echo"
# 'eval' spočítá a vytiskne součet $ x a $ y provedením příkazů $ c1
a $ c2 proměnné
eval $ c2 $ c1
Spusťte skript.
$ bash evaltest.shSoučet 5 a 15 je 20, který se zobrazuje na výstupu.
Příklad-3: Tisk hodnoty proměnné, která je přiřazena k jiné proměnné
Vytvořte bash skript s názvem evaltest2.sh s následujícím skriptem. Zde se jedna proměnná používá k přiřazení názvu jiné proměnné, která obsahuje data řetězce. Příkaz 'eval' vytiskne hodnotu proměnné, která obsahuje název jiné proměnné, jako obsah.
evaltest2.sh
#!/ bin / bash# Přiřaďte hodnotu řetězce do proměnné $ str1
str1 = "Shell Script"
# Přiřaďte proměnné $ str2 název proměnné „str1“
str2 = str1
# Uložte příkaz do proměnné, příkaz $
command = "echo"
Příkaz # 'eval' provede příkaz 'echo' a vytiskne hodnotu proměnné
který obsahuje v jiné proměnné
eval $ příkaz \ $ $ str2
Spusťte skript.
$ bash evaltest2.shJe vytištěna hodnota proměnné $ str1.
Existuje další způsob přístupu k hodnotě proměnné, jejíž název je hodnotou jiné proměnné. Použitím '!'symbol je hodnota tohoto typu proměnné přístupná. Následující příkaz lze použít jako alternativu k předchozímu skriptu a výstup bude stejný.
$ str1 = "Shell Script"; str2 = str1; command = "echo"; eval $ příkaz $ !str2Příklad 4: Vytvořte řadu proměnných s hodnotami a pomocí příkazu 'eval' vypočítejte součet hodnot
Vytvořte bash skript s názvem evaltest3.sh a přidejte následující skript. Tento skript vytvoří řadu proměnných a uloží hodnoty do proměnných pomocí příkazu 'eval'. Hodnoty proměnných budou přidány a uloženy do proměnné s názvem $ sum. Dále je příkaz 'echo' s řetězcovými hodnotami přiřazen do proměnné, která se používá v příkazu 'eval' k tisku hodnoty proměnné $ sum.
evaltest3.sh
#!/ bin / bash# Inicializujte proměnnou $ sum s hodnotou 0
součet = 0
# Deklarujte smyčku for, která bude 4krát iterovat
pro n v 1… 4
dělat
# Vytvořte čtyři proměnné pomocí příkazu eval
eval x $ n = $ n
# Přidejte hodnoty proměnné s $ sum
součet = $ (($ součet + $ x $ n))
Hotovo
# Přiřaďte příkaz 'echo' pomocí řetězce do proměnné
command = "echo 'Výsledek součtu ='"
Příkaz # 'eval' vytiskne hodnotu součtu pomocí proměnných
eval $ příkaz $ součet
Spusťte skript.
$ bash evaltest3.shSoučet čtyř proměnných je 1 + 2 + 3 + 4 = 10, které se vytisknou.
Příklad-5: Pomocí příkazu 'eval' odstraníte seznam souborů
Vytvořte soubor bash s názvem evaltest4.sh s následujícím skriptem. Tento skript načte tři argumenty příkazového řádku jako názvy souborů, které budou odstraněny, a uloží hodnoty argumentů do proměnné pole, $ fn. Příkaz 'rm' je uložen v proměnné, příkaz $. Zde je deklarována smyčka pro načtení každého názvu souboru a odstranění souboru pomocí příkazu 'eval', pokud soubor existuje.
evaltest4.sh
#!/ bin / bash# Deklarovat pole
prohlásit -A fn
# Přečtěte si tři argumenty příkazového řádku a uložte je do tří indexů pole
fn [0] = 1 $
fn [1] = 2 USD
fn [2] = 3 USD
# Uložte příkaz remove do proměnné
command = "rm"
# smyčka bude třikrát iterovat, aby přečetla tři prvky pole
pro index v 0 1 2
dělat
# Zkontrolujte, zda soubor existuje nebo neexistuje
if [[-f $ fn [$ index]]]; pak
# pokud soubor existuje, odeberte jej
eval $ příkaz $ fn [$ index]
# Informovat uživatele, že soubor byl odstraněn
echo "$ fn [$ index] je smazáno."
Jiný
# Informujte uživatele, že soubor neexistuje
echo "$ fn [$ index] neexistuje."
fi
Hotovo
Spusťte skript.
$ bash evaltest4.značky sh.položka docx.produkt txt.docxZde jsou v době provádění skriptu uvedeny tři názvy souborů. Výstup ukazuje, že značky.docx a produkt.docx existují v aktuálním umístění a soubory jsou odstraněny a položka.txt v aktuálním umístění neexistuje.
Závěr
Jakýkoli příkaz bash lze provést příkazem 'eval' deklarováním jako řetězec. V tomto výukovém programu se používá příkaz 'eval' pro provádění různých integrovaných příkazů bash a vytváření řady proměnných. Použití příkazu 'eval' bude uživatelům vymazáno a po přečtení tohoto tutoriálu budou moci tento příkaz používat k různým účelům.