Linux команди

Bash eval команда

Bash eval команда
Командата 'eval' се използва в bash за изпълнение на аргументи като команда на черупката. Аргументите се обединяват в низ и се вземат като вход за командата на обвивката за изпълнение на командата. 'eval' изпълнява командата в текущата обвивка. Тази команда е полезна, когато изисква изпълнение на която и да е команда, която съдържа специален оператор или запазени ключови думи. Тази команда може да се използва във всеки скрипт, също така когато името на променливата е неизвестно до изпълнението на скрипта. Този урок ще помогне на потребителите на Linux да научат използването на тази команда.

Синтаксис:

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' ще бъде изчистено за потребителите и те ще могат да използват тази команда за различни цели, след като прочетат този урок.

Как да разработите игра на Linux
Преди десетилетие не много потребители на Linux биха прогнозирали, че любимата им операционна система един ден ще бъде популярна игрална платформа за ...
Пристанища с отворен код на търговски игрални машини
Безплатни разширения на играта с отворен код и междуплатформени игри могат да се използват за възпроизвеждане на стари, както и някои от доста скорошн...
Най-добрите игри за команден ред за Linux
Командният ред не е само най-големият ви съюзник при използване на Linux - той може да бъде и източник на забавление, защото можете да го използвате, ...