LINUX.ORG.RU

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

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

Хотите, или не хотите, дорогие участники треда, мы должны признать, что у Bash, с точки зрения ЯП есть определённые проблемы. (Заметьте, с точки зрения ЯП, а не с точки зрения файла, который хранит 2-3 строчки для выполнения команд.)

  • У Bash нет ссылок. Нельзя сделать ссылку на переменную, и передать её в качестве аргумента. Даже если эта ссылка будет юзабельна только внутри bash, и его функций. Нет, то, что есть у Bash сейчас, ссылками назвать нельзя. Потому что передаётся название переменной, а не её адрес.
  • У Bash есть всего 4 типа данных. Строка(самый основной), целое число, массив, и хэш. Ничего другого не дано. И заметьте, типа данных с точкой, даже не подразумевается. В связи с предыдущим пунктом, передавать массивы и хэши в качестве аргумента функции - невозможно. Любая попытка передать целочисленное число, приведёт к преобразованию его в строковой тип, в связи с ограничениями языка. Вот и получается, что единственное, чем функции в bash могут друг друга кидаться, это строки. Хочешь передать массив? Сформируй строку с определённым разделителем, или вообще строку, полностью повторяющую объявление массива в bash, а потом кидай это в eval(как мило, не так ли?). Ну или как-нибудь по другому передай строку, а потом упорно разбирай, что же там функции такого передали...
    Я соглашусь, это до боли просто. Нет ничего проще строк. Но эффективность такого метода - стремится к нулю. Особенно учитывая общую тормознутость bash.
  • Т.к. в Bash полностью отсутствует определение «число с точкой», математика с такими числами невозможна в рамках bash. Bash умеет в математику(для чего же еще нужны «$(( ))»?), но только в целочисленную. Для всего остального обычно, насилуется bc, или perl.

Если захочется, можно еще чего вспомнить(я описал только то, что меня беспокоит). Чего только стоят костыли... И использовать его для чего-то более, чем говноскриптики, это как минимум изнасилование. В принципе, ни для чего более он и не нужен.

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

Хотите, или не хотите, дорогие участники треда, мы должны признать, что у Bash, с точки зрения ЯП есть определённые проблемы. (Заметьте, с точки зрения ЯП, а не с точки зрения файла, который хранит 2-3 строчки для выполнения команд.)

  • У Bash нет ссылок. Нельзя сделать ссылку на переменную, и передать её в качестве аргумента. Даже если эта ссылка будет юзабельна только внутри bash, и его функций. Нет, то, что есть у Bash сейчас, ссылками назвать нельзя. Потому что передаётся название переменной, а не её адрес.
  • У Bash есть всего 4 типа данных. Строка(самый основной), целое число, массив, и хэш. Ничего другого не дано. И заметьте, типа данных с точкой, даже не подразумевается. В связи с предыдущим пунктом, передавать массивы и хэши в качестве аргумента функции - невозможно. Любая попытка передать целочисленное число, приведёт к преобразованию его в строковой тип, в связи с ограничениями языка. Вот и получается, что единственное, чем функции в bash могут друг друга кидаться, это строки. Хочешь передать массив? Сформируй строку с определённым разделителем, или вообще строку, полностью повторяющую объявление массива в bash, а потом кидай это в eval(как мило, не так ли?). Ну или как-нибудь по другому передай строку, а потом упорно разбирай, что же там функции такого передали...
    Я соглашусь, это до боли просто. Нет ничего проще строк. Но эффективность такого метода - стремится к нулю. Особенно учитывая общую тормознутость bash.
  • Т.к. в Bash полностью отсутствует определение «число с точкой», математика с такими числами невозможна в рамках bash. Bash умеет в математику(для чего же еще нужны «$(( ))»?), но только в целочисленную. Для всего остального обычно, насилуется bc, или perl.

Если захочется, можно еще чего вспомнить. Чего только стоят костыли... И использовать его для чего-то более, чем говноскриптики, это как минимум изнасилование. В принципе, ни для чего более он и не нужен.