Команда eval позволяет выполнять аргументы как команду командной строки. Вы можете объединить аргументы в одну строку, использовать результат в качестве входных данных для командной строки и выполнять результирующие команды.
Предположим, вы хотите выполнить несколько команд в Linux, уверены, что вы можете связать их в цепочку, но что, если мы скажем вам, что вы можете сохранить их в переменной и выполнить ее?
Вот где проявляется вся идея команды eval, позволяющая вам выполнять цепочку команд, хранящихся в одной переменной.
Итак, в этой статье мы познакомим вас с несколькими примерами использования команды eval в Linux.
Чтобы использовать eval или любую другую команду, всегда полезно начинать с синтаксиса. Итак, вот синтаксис использования команды eval:
eval [argument]
Здесь, в поле [argument], вы вводите переменную, которая присваивается с помощью цепочки команд.
Проще говоря, вы добавляете переменную, которая содержит несколько команд с желаемыми параметрами.
Теперь давайте посмотрим на некоторые примеры команды eval.
Первым шагом является создание переменной, в которой вы будете хранить цепочку команд. Чтобы создать переменную, используйте следующий синтаксис команды:
variable_name="chain of commands"
Например, здесь мы создали переменную andreyex, которая будет печатать текст приветствия для вошедшего в систему пользователя:
andreyex="echo 'Hello $USER'"
После завершения вы можете использовать команду eval следующим образом для выполнения команд, хранящихся внутри переменной:
eval $<variable_name>
Поскольку мы назвали свою переменную andreyex, мы будем использовать следующее:
eval $andreyex
andreyex@Destroyer: $ andreyex="echo 'Hello $USER'" andreyex@Destroyer: $ eval $andreyex Hello andreyex andreyex@Destroyer:
Хотя для большинства пользователей работа будет выполнена с помощью одной переменной, вы можете захотеть использовать несколько переменных для лучшего контроля над выполнением.
В этом случае вы можете просто объединить их следующим образом:
eval $command_1 $command_2
Но если вы хотите добавить какую-либо дополнительную команду, такую как echo или print, то вам придется заключить ее в двойные кавычки:
eval "echo $command_1 $command_2"
Для справки, здесь мы использовали две строки в $command_1 и $command_2, как показано здесь, а позже использовали команду echo с командой eval:
andreyex@Destroyer: $ command_1="My name is" andreyex@Destroyer: $ command_2=" andreyex" andreyex@Destroyer: $ eval "echo $command_1 $command_2" My name is andreyex andreyex@Destroyer: $
Для выполнения математических операций синтаксис аналогичен тому, что мы объяснили для использования нескольких переменных, но с небольшим изменением.
Предположим, у вас есть две переменные: var1 и var2, содержащие числовые значения, и вы хотите их добавить (выполнить сложение).
Поэтому вам придется использовать двойные круглые скобки ((…)) для этой цели.
Звучит сложно? Позвольте мне показать вам, как это осуществить.
Мы хотим выполнить сложение между var1 и var2, поэтому первым шагом будет выделение им некоторых чисел:
var1=10 var2=5
После завершения возьмите другую переменную, чтобы отобразить некоторый текст:
result="Your total is"
Наконец, соберите все это вместе, как показано здесь:
eval 'echo $result' $(($var1+var2))
andreyex@Destroyer: andreyex@Destroyer: $ var1=10 andreyex@Destroyer: $ var2=5 andreyex@Destroyer: $ result="Your total is" andreyex@Destroyer: $ eval 'echo $result' $(($var1+var2)) Your total is 15 andreyex@Destroyer: $
Если использование команды eval для выполнения нескольких команд кажется вам неуместным, то мы написали подробную статью, объясняющее, как запускать несколько команд в Linux:
Мы надеемся, вы найдете это полезным.