Назад | Перейти на главную страницу

Когда использовать Bash, когда Python / Perl / Ruby?

Каково ваше объяснение, когда писать сценарий Bash, а когда использовать более мощный язык сценариев (Python, Perl, Ruby, ...)?

Я считаю, что очень простые сценарии лучше работают с Bash, но многие из них со временем становятся довольно причудливыми, и переписывать все это никогда не кажется хорошей идеей. Вот почему я склоняюсь к тому, чтобы всегда использовать Python для всех сценариев.

Но поскольку Bash, кажется, является языком сценариев Linux, может ли это сделать ответственный системный администратор?

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

Некоторые инструменты / среды могут быть немного лучше адаптированы к определенным задачам, чем другие, но когда дело доходит до различения bash, python, perl и ruby ​​(и т.п.) для административных сценариев, вы должны учитывать (если не одобрять) человеческий фактор:

  1. Ремонтопригоден? (Вы затронули это в своем вопросе.)
  2. Может ли он использоваться другими людьми в вашей организации? Если вы (почему-то) единственный администратор в своей компании, который знает какой-либо Python, вероятно, это неподходящий язык для использования, даже если он создает более короткие или более эффективные сценарии, чем эквивалентный bash.

Если среды в равной степени доступны в ваших системах и если многие языки соответствуют требованиям, выберите тот, с которым вам удобнее всего. Зачем? Это сократит время разработки, упростит отладку, повысит ремонтопригодность и, по крайней мере, не снизит удобство использования в учреждениях.

Мое субъективное предпочтение тоже относится к bash, но это не имеет значения: это только мой выбор, потому что мне это нравится (скажем, я знаю, как манипулировать iptables без поиска документации).

Кроме того, используйте правильный инструмент для работы. Ваша проблема требует более гибких структур данных, чем предоставляет bash?