Szintaxis:
eval [érv…]Itt az argumentumok elemzésre kerülnek, és egyesülnek egy karaktersorozatba, amelyet a shell hajt végre. Az 'eval' a parancs végrehajtása után visszatérési állapotkódot ad vissza. Az 'eval' 0-t ad meg kilépési állapotkódként, ha nem ad meg argumentumot, vagy csak null argumentumot ad meg.
1. példa: A „wc” parancs végrehajtása az „eval” használatával
Tegyük fel, hogy egy „osztály.txt”A következő szöveget tartalmazza. A fájl sorainak teljes számát a 'wc' paranccsal lehet megszámolni.
osztály.txt
Egyéni keresőmotorEEE
ETE
ANGOL
BBA
GYÓGYSZERTÁR
A következő parancs a 'wc' parancsot tárolja a fájl teljes sorainak számlálásához, osztály.txt a változóhoz, $ mycommand.
$ mycommand = "wc -l osztály.txt "A következő 'eval' parancs futtatja a 'wc' parancsot, és kinyomtatja a sorok teljes számát.
$ eval $ mycommandKimenet:
A kimenet ezt mutatja osztály.txt fájl 6 soros.
Examplel-2: Hajtsa végre az 'expr' parancsot az 'eval' használatával
Hozzon létre egy bash fájlt evaltest.SH és adja hozzá a következő szkriptet. Ez a szkript két egész értéket fog rendelni a $ x és $ y változóhoz. Az 'expr' és az 'echo' parancsok két változóhoz vannak rendelve: $ c1 és $ c2, amelyeket később az 'eval' paranccsal hajtanak végre.
evaltest.SH
#!/ bin / bash# Inicializálja az x és y változót
x = 5
y = 15
# Az első parancs változó az 'expr' parancs hozzárendelésére szolgál az $ x és $ y értékek hozzáadásához
c1 = "'expr $ x + $ y'"
#A második parancs változó az 'echo' parancs hozzárendelésére szolgál
c2 = "visszhang"
Az # 'eval' kiszámítja és kinyomtatja $ x és $ y összegét a $ c1 parancsainak végrehajtásával
és $ c2 változók
eval $ c2 $ c1
Futtassa a szkriptet.
$ bash evaltest.SH5 és 15 összege 20, amely a kimeneten látható.
3. példa: Nyomtassa ki egy másik változóhoz rendelt változó értékét
Hozzon létre egy evaltest2 nevű bash szkriptet.sh a következő szkript segítségével. Itt az egyik változó egy másik változó nevének hozzárendelésére szolgál, amely string adatokat tartalmaz. Az 'eval' parancs kinyomtatja annak a változónak az értékét, amely tartalomként tartalmazza egy másik változó nevét.
evaltest2.SH
#!/ bin / bash# Rendeljen egy string értéket a $ str1 változóhoz
str1 = "Shell szkript"
# Rendelje hozzá az „str1” változó nevét az $ str2 változóhoz
str2 = str1
# Tárolja a parancsot a $ parancs változóba
parancs = "visszhang"
A # 'eval' parancs végrehajtja az 'echo' parancsot, és kinyomtatja a változó értékét
amely egy másik változóban tartalmaz
eval $ parancs \ $ $ str2
Futtassa a szkriptet.
$ bash evaltest2.SHA $ str1 változó értéke ki van nyomtatva.
Van egy másik módszer a változó értékének elérésére, amely név egy másik változó értéke. A 'használata!'szimbólum az ilyen típusú változó értéke elérhető. A következő parancs használható az előző parancsfájl alternatívájaként, és a kimenet ugyanaz lesz.
$ str1 = "Shell szkript"; str2 = str1; parancs = "visszhang"; eval $ command $ !str24. példa: Hozzon létre egy változósort értékekkel, és az 'eval' paranccsal számítsa ki az értékek összegét
Hozzon létre egy evaltest3 nevű bash szkriptet.sh, és adja hozzá a következő szkriptet. Ez a szkript egy sor változót hoz létre, és az 'eval' paranccsal tárolja az értékeket a változókban. A változók értékeit hozzáadjuk és egy $ sum nevű változóba tároljuk. Ezután az 'echo' parancs karaktersorozattal rendelhető hozzá egy változóhoz, amelyet az 'eval' parancs használ a $ sum változó értékének kinyomtatására.
evaltest3.SH
#!/ bin / bash# Inicializálja a $ sum változót 0 értékkel
összeg = 0
# Nyújtson be egy for ciklust, amely négyszer fog ismétlődni
n esetén 1… 4
csinálni
# Hozzon létre négy változót az eval paranccsal
eval x $ n = $ n
# Adja hozzá a változó értékeit $ összeggel
összeg = $ (($ összeg + $ x $ n))
Kész
# Rendelje hozzá az 'echo' parancsot stringgel egy változóba
command = "echo 'Az összeg ='" eredménye
A # 'eval' paranccsal az összeg értékét változók segítségével nyomtathatja ki
eval $ parancs $ sum
Futtassa a szkriptet.
$ bash evaltest3.SHA négy változó összege: 1 + 2 + 3 + 4 = 10, amely ki van nyomtatva.
5. példa: Az 'eval' paranccsal eltávolíthatja a fájlokat
Hozzon létre egy evaltest4 nevű bash fájlt.sh a következő szkript segítségével. Ez a szkript három parancssori argumentumot olvashat el fájlnévként, amelyeket eltávolít, és az argumentumértékeket egy tömb változóba, az $ fn tárolja. Az 'rm' parancs egy $ változóban van tárolva. Mert a ciklus itt van deklarálva, hogy minden fájlnév beolvasásra kerül, és az 'eval' paranccsal távolítsa el a fájlt, ha a fájl létezik.
evaltest4.SH
#!/ bin / bash# Nyújtson be egy tömböt
kijelenti -A fn
# Olvasson el három parancssori argumentumot, és tárolja a tömb három indexébe
fn [0] = 1 USD
fn [1] = 2 USD
fn [2] = 3 USD
# Tárolja az remove parancsot egy változóba
parancs = "rm"
A # for ciklus háromszor fog ismételni három tömb elem elolvasása érdekében
indexhez a 0 1 2-ben
csinálni
# Ellenőrizze, hogy a fájl létezik-e vagy sem
ha [[-f $ fn [$ index]]]; azután
# ha a fájl létezik, akkor távolítsa el a fájlt
eval $ parancs $ fn [$ index]
# Tájékoztassa a felhasználót a fájl eltávolításáról
echo "$ fn [$ index] törölve."
Más
# Tájékoztassa a felhasználót, hogy a fájl nem létezik
echo "$ fn [$ index] nem létezik."
fi
Kész
Futtassa a szkriptet.
$ bash evaltest4.sh jelek.docx elem.txt termék.docxItt három fájlnév van megadva a szkript futtatásakor. A kimenet azt jelzi.docx és termék.A docx létezik az aktuális helyen, és a fájlok eltávolításra kerülnek, és.A txt nem létezik az aktuális helyen.
Következtetés
Bármely bash parancs végrehajtható az 'eval' paranccsal, stringként deklarálva. Az 'eval' parancsot ebben az oktatóanyagban a bash különböző beépített parancsainak végrehajtására és változó-sorozat létrehozására használják. Az 'eval' parancs használatát töröljük a felhasználók számára, és az oktatóanyag elolvasása után különböző célokra használhatják ezt a parancsot.