Вопрос будет привлекать мнения ...
eval
является частью стандартной оболочки:
Утилита
eval
должна создать команду, объединяя аргументы вместе, разделяя каждый с помощью символ. Созданная команда должна быть прочитана и выполнена оболочкой.
Вероятные причины недовольства eval
:
eval
позволяет вам устанавливать переменные на основе имен других переменных). С другой стороны, если данные, входящие в eval
, проверяются, например, результаты проверки имен файлов и проверки отсутствия кавычек, которые усложняют ситуацию, то это полезный инструмент. Обычно предлагаемые альтернативы менее переносимы, например, специфичны для некоторой конкретной реализации оболочки.
Дальнейшее чтение (но имейте в виду, что bash предлагает специфичные для реализации / нестандартные альтернативы):