LINUX.ORG.RU

История изменений

Исправление vodz, (текущая версия) :

Извне - это значит, что на момент написания скрипта мв не знаем какие команды будем выполнять.

Простите, вы путаете с компилятором. Для интерпретатора:

read cmd
$cmd
и никакой eval не нужен.

Если бы знали - можно было бы обойтись без eval.

Удивительно, как тяжело человечество скрипит, когда пытается даже одну рекурсию в мозгах провернуть. Именно знание, какой набор команд и аргументов будет выполнять eval и есть залог его безопасного применения, без этого применять нельзя. Чувствуете разницу? Особенно с вышеприведенным «скриптом».

Дело в том, что не только в других shell-ах не желают добавлять конструкции, которые позволяют обойтись без eval, такие как массивы, косвенная адресация по имени переменной к переменной. Но даже в bash такие конструкции неполноценные, а если и добавляются, то по чайной ложке в пятилетку. Вот у меня куча хостов, на которых нет declare -n, потому что bash 4.2. Многомерных массивов похоже вообще не появится никогда. Является ли это проблемой? А по моему, проблема у тех, кто так и не понял, что такое eval.

Исправление vodz, :

Извне - это значит, что на момент написания скрипта мв не знаем какие команды будем выполнять.

Простите, вы путаете с компилятором. Для интерпретатора:

read cmd
$cmd
и никакой eval не нужен.

Если бы знали - можно было бы обойтись без eval.

Удивительно, как тяжело человечество скрипит, когда пытается даже одну рекурсию в мозгах провернуть. Именно знание, какой набор команд и аргументов будет выполнять eval и есть залог его безопасного применения, без этого применять нельзя. Чувствуете разницу?

Дело в том, что не только в других shell-ах не желают добавлять конструкции, которые позволяют обойтись без eval, такие как массивы, косвенная адресация по имени переменной к переменной. Но даже в bash такие конструкции неполноценные, а если и добавляются, то по чайной ложке в пятилетку. Вот у меня куча хостов, на которых нет declare -n, потому что bash 4.2. Многомерных массивов похоже вообще не появится никогда. Является ли это проблемой? А по моему, проблема у тех, кто так и не понял, что такое eval.

Исходная версия vodz, :

Извне - это значит, что на момент написания скрипта мв не знаем какие команды будем выполнять.

Простите, вы путаете с компилятором. Для интерпретатора:

read cmd
$cmd
и никакой eval не нужен.

Если бы знали - можно было бы обойтись без eval.

Удивительно, как тяжело человечество скрипит, когда пытается даже одну рекурсию в мозгах провернуть. Именно знание, какой набор команд и аргументов будет выполнять eval и есть залог его безопасного применения, без этого применять нельзя. Чувствуете разницу?

Дело в том, что не только в других shell-ах не желают добавлять конструкции, которые позволяют обойтись без eval, такие как массивы, косвенная адресация по имени переменной к переменной. Но даже в bash такие конструкции неполноценные, а если и добавляются, то по чайной ложки в пятилетку. Вот у меня куча хостов, на которых нет declare -n, потому что bash 4.2. Многомерных массивов похоже вообще не появится никогда. Является ли это проблемой? А по моему, проблема у тех, кто так и не понял, что такое eval.