Синтаксис:
eval [аргумент ...]Тук аргументите се анализират и комбинират в низ, който ще се изпълни от черупката. 'eval' връща код за състояние на изход след изпълнение на командата. 'eval' връща 0 като код на състоянието на изход, ако не е предоставен аргумент или е предоставен само нулев аргумент.
Пример-1: Изпълнете командата 'wc', използвайки 'eval'
Да предположим, че текстов файл с име „отдел.текст”Съдържа следния текст. Общият брой на редовете на файла може да бъде преброен с команда 'wc'.
отдел.текст
CSEЕЕО
ETE
АНГЛИЙСКИ
BBA
АПТЕКА
Следващата команда ще съхрани командата 'wc', за да преброи общия брой редове на файла, отдел.текст към променливата, $ mycommand.
$ mycommand = "wc -l отдел.текст"Следващата команда 'eval' ще изпълни командата 'wc' и ще отпечата общия брой редове.
$ eval $ mycommandИзход:
Резултатът показва това отдел.текст файлът има 6 реда.
Examplel-2: Изпълнете командата 'expr', използвайки 'eval'
Създайте bash файл с име evaltest.ш и добавете следния скрипт. Този скрипт ще присвои две целочислени стойности на променливите $ x и $ y. Командите 'expr' и 'echo' се присвояват на две променливи, $ c1 и $ c2, които се изпълняват по-късно с помощта на командата 'eval'.
evaltest.ш
#!/ bin / bash# Инициализирайте променливите x и y
x = 5
у = 15
# Първата променлива на командата се използва за присвояване на команда 'expr' за добавяне на стойностите на $ x и $ y
c1 = "'израз $ x + $ y'"
# Втората командна променлива се използва за присвояване на команда "ехо"
c2 = "ехо"
# 'eval' ще изчисли и отпечата сумата от $ x и $ y чрез изпълнение на командите от $ c1
и $ c2 променливи
eval $ c2 $ c1
Стартирайте скрипта.
$ bash evaltest.шСумата от 5 и 15 е 20, която е показана в изхода.
Пример-3: Отпечатайте стойността на променлива, която е присвоена в друга променлива
Създайте bash скрипт с име evaltest2.sh със следния скрипт. Тук една променлива се използва за присвояване на името на друга променлива, която съдържа низови данни. Командата 'eval' ще отпечата стойността на променливата, която съдържа името на друга променлива като съдържание.
evaltest2.ш
#!/ bin / bash# Присвояване на стойност на низ на променливата, $ str1
str1 = "Shell Script"
# Задайте името на променливата, „str1“ на променливата $ str2
str2 = str1
# Съхранявайте командата в променливата $ command
command = "ехо"
Командата # 'eval' ще изпълни командата 'echo' и ще отпечата стойността на променливата
който се съдържа в друга променлива
eval $ command \ $ $ str2
Стартирайте скрипта.
$ bash evaltest2.шОтпечатва се стойността на променливата $ str1.
Има друг начин за достъп до стойността на променлива, чието име е стойността на друга променлива. Използвайки '!'символ може да се получи стойността на този тип променлива. Следващата команда може да се използва като алтернатива на предишния скрипт и изходът ще бъде същият.
$ str1 = "Shell Script"; str2 = str1; команда = "ехо"; eval $ command $ !str2Пример-4: Създайте серия от променливи със стойности и изчислете сумата от стойностите с помощта на командата 'eval'
Създайте bash скрипт с име evaltest3.sh и добавете следния скрипт. Този скрипт ще създаде поредица от променливи и ще съхрани стойностите в променливите с помощта на командата 'eval'. Стойностите на променливите ще бъдат добавени и съхранени в променлива с име $ sum. След това командата 'echo' със низови стойности се присвоява на променлива, която се използва в командата 'eval' за отпечатване на стойността на променливата $ sum.
evaltest3.ш
#!/ bin / bash# Инициализирайте променливата $ sum със стойността 0
сума = 0
# Декларирайте цикъл for, който ще се повтори 4 пъти
за n в 1… 4
направете
# Създайте четири променливи, като използвате командата eval
eval x $ n = $ n
# Добавете стойностите на променливата с $ sum
сума = $ (($ сума + $ x $ n))
Свършен
# Присвояване на команда "ехо" със низ в променлива
command = "echo 'Резултатът от сумата ='"
Командата # 'eval' отпечатва стойността на сумата с помощта на променливи
eval $ command $ sum
Стартирайте скрипта.
$ bash evaltest3.шСумата от четирите променливи е 1 + 2 + 3 + 4 = 10, която се отпечатва.
Пример-5: Използване на командата 'eval' за премахване на списъка с файлове
Създайте bash файл с име evaltest4.sh със следния скрипт. Този скрипт ще прочете три аргумента от командния ред като имена на файлове, които ще бъдат премахнати, и ще съхрани стойностите на аргумента в променлива на масив, $ fn. Командата 'rm' се съхранява в променлива, $ command. Тук е деклариран цикъл For за извличане на всяко име на файл и премахване на файла с помощта на командата 'eval', ако файлът съществува.
evaltest4.ш
#!/ bin / bash# Декларирайте масив
декларирам -A fn
# Прочетете три аргумента от командния ред и съхранявайте в три индекса на масива
fn [0] = $ 1
fn [1] = $ 2
fn [2] = $ 3
# Съхранявайте командата за премахване в променлива
command = "rm"
# for цикъл ще се повтори три пъти, за да прочете три елемента от масив
за индекс в 0 1 2
направете
# Проверете дали файлът съществува или не съществува
ако [[-f $ fn [$ index]]]; тогава
# ако файлът съществува, премахнете го
eval $ command $ fn [$ index]
# Информирайте потребителя, че файлът е премахнат
echo "$ fn [$ index] се изтрива."
Иначе
# Информирайте потребителя, че файлът не съществува
echo "$ fn [$ index] не съществува."
fi
Свършен
Стартирайте скрипта.
$ bash evaltest4.ш марки.docx елемент.txt продукт.docxТук са предоставени три имена на файлове по време на изпълнение на скрипта. Резултатът показва, че маркира.docx и продукт.docx съществуват в текущото местоположение и файловете се премахват и, item.txt не съществува в текущото местоположение.
Заключение
Всяка команда bash може да бъде изпълнена чрез команда 'eval' чрез деклариране като низ. Командата 'eval' се използва в този урок за изпълнение на различни вградени команди на bash и създаване на поредица от променливи. Използването на командата 'eval' ще бъде изчистено за потребителите и те ще могат да използват тази команда за различни цели, след като прочетат този урок.