Команди Linux

Команда Bash eval

Команда Bash eval
Команда 'eval' використовується в bash для виконання аргументів, як команда оболонки. Аргументи об'єднуються в рядок і приймаються як вхідні дані для команди оболонки для виконання команди. 'eval' виконує команду в поточній оболонці. Ця команда корисна, коли потрібно виконати будь-яку команду, яка містить спеціальний оператор або зарезервовані ключові слова. Цю команду можна використовувати в будь-якому сценарії, також коли ім'я змінної невідоме, до виконання сценарію. Цей посібник допоможе користувачам Linux навчитися користуватися цією командою.

Синтаксис:

eval [аргумент…]

Тут аргументи аналізуються і об'єднуються в рядок, який буде виконуватися оболонкою. 'eval' повертає код стану виходу після виконання команди. 'eval' повертає 0 як код стану виходу, якщо аргумент не вказаний або вказаний лише нульовий аргумент.

Приклад-1: Виконайте команду 'wc', використовуючи 'eval'

Припустимо, текстовий файл із назвою “кафедра.txt”Містить наступний текст. Загальну кількість рядків файлу можна підрахувати командою 'wc'.

кафедра.txt

CSE
ЕЕО
ETE
АНГЛІЙСЬКА
BBA
АПТЕКА

Наступна команда буде зберігати команду 'wc' для підрахунку загальної кількості рядків файлу, кафедра.txt до змінної, $ mycommand.

$ mycommand = "wc -l відділ.txt "

Наступна команда 'eval' запустить команду 'wc' і виведе загальну кількість рядків.

$ eval $ mycommand

Вихід:

Результат показує це кафедра.txt файл має 6 рядків.

Приклад l-2: Виконайте команду 'expr', використовуючи 'eval'

Створіть файл із ім'ям bash evaltest.ш та додайте наступний сценарій. Цей сценарій призначить два цілі значення змінні $ x та $ y. Команди 'expr' та 'echo' призначаються двом змінним $ c1 та $ c2, які виконуються пізніше за допомогою команди 'eval'.

evaltest.ш

#!/ bin / bash
# Ініціалізуйте змінні x і y
х = 5
y = 15
# Перша змінна команди використовується для призначення команди 'expr' для додавання значень $ x та $ y
c1 = "'вираз $ x + $ y'"
# Друга змінна команди використовується для призначення команди 'echo'
c2 = "ехо"
# 'eval' обчислює та друкує суму $ x та $ y, виконуючи команди $ c1
та змінних $ c2
eval $ c2 $ c1

Запустіть сценарій.

$ bash evaltest.ш

Сума 5 і 15 дорівнює 20, що відображається на виході.

Приклад-3: Вивести значення змінної, призначеної в іншій змінній

Створіть скрипт bash з ім'ям evaltest2.sh з наступним сценарієм. Тут одна змінна використовується для призначення імені іншої змінної, яка містить рядкові дані. Команда 'eval' надрукує значення змінної, що містить ім'я іншої змінної як вміст.

evaltest2.ш

#!/ bin / bash
# Присвоїти значення змінної, рядок $ str1
str1 = "Сценарій оболонки"
# Присвоїти змінній $ str2 ім'я змінної, “str1”
str2 = str1
# Зберігаємо команду у змінній $ command
command = "echo"
Команда # 'eval' виконає команду 'echo' і виведе значення змінної
що міститься в іншій змінній
eval $ command \ $ $ str2

Запустіть сценарій.

$ bash evaltest2.ш

Друкується значення змінної $ str1.

Існує інший спосіб отримати доступ до значення змінної, ім’я якої є значенням іншої змінної. Використання '!'символ значення цього типу змінної можна отримати. Наступну команду можна використовувати як альтернативу попередньому сценарію, і результат буде однаковим.

$ str1 = "Сценарій оболонки"; str2 = str1; command = "echo"; 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))
зроблено
# Призначити команду 'echo' з рядком до змінної
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
# Збережіть команду remove у змінну
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' буде очищено для користувачів, і вони зможуть використовувати цю команду для різних цілей після прочитання цього посібника.

Control & manage mouse movement between multiple monitors in Windows 10
Dual Display Mouse Manager lets you control & configure mouse movement between multiple monitors, by slowing down its movements near the border. Windo...
WinMouse lets you customize & improve mouse pointer movement on Windows PC
If you want to improve the default functions of your mouse pointer use freeware WinMouse. It adds more features to help you get the most out of your h...
Mouse left-click button not working on Windows 10
If you are using a dedicated mouse with your laptop, or desktop computer but the mouse left-click button is not working on Windows 10/8/7 for some rea...