при разработке сценариев Bash я иногда запускаю его в контейнере Docker или на виртуальной машине, чтобы проверить его, но идеальное место для создания сценариев - это моя локальная рабочая станция MacOS.
Когда дело доходит до скриптов Bash, до сих пор это никогда не было проблемой. Однако сегодня я заметил, что date
команда ведет себя по-разному в Linux и MacOS.
Пример сценария добавления дней к объекту даты:
Linux:
root@host$ date -d "$(date) 3 days" +%Y-%m-%d
2018-04-20
MacOS:
WS:tmp user$ date -d "$(date) 3 days" +%Y-%m-%d
usage: date [-jnRu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ...
[-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]
Не работает, пришлось переформатировать:
WS:tmp user$ date -j -v +3d -f "%Y-%m-%d" $(date +%Y-%m-%d) +%Y-%m-%d`
2018-04-20
Вот это боль! Простой сценарий bash, и теперь мне нужен контейнер или виртуальная машина, чтобы сделать простую манипуляцию с датой.
Это заставляет меня чувствовать, что я стреляю себе в ногу, развиваясь таким образом, и вся причина, по которой я получил Mac, заключалась в том, что он намного ближе к среде nix, чем любая версия Windows, поэтому я мог выполнять простую локальную разработку на нем.
Мои вопросы):
date
- это утилита GNU, поэтому проблем с лицензированием возникнуть не должно. Мы ценим ваш опыт работы с этой темой, спасибо!
Как вы выяснили, в разных ОС будут установлены разные инструменты. Если вы в первую очередь специализируетесь на разработке сценариев для чего-то вроде Debian или CentOS, я бы очень рекомендую вам использовать эту среду для этого. Будь то виртуальная машина, облачный VPS или контейнер Docker, зависит от вас.
В большинство В некоторых случаях поведение MacOS и различных дистрибутивов Linux одинаково, но не всегда.
В качестве альтернативы вы можете использовать такие инструменты, как варево. заваривать для установки основных версий инструментов, а не только для macOS. Очевидно, здесь есть и другие предостережения, поскольку инструменты, которые перекрывают инструменты в macOS, не связаны по умолчанию, и вам придется их переопределить, но это выполнимо (это может сломать вещи, поэтому будьте осторожны). Вы также можете скомпилировать их самостоятельно.
Я не знаю списка различий между Linux и macOS. Это также зависит от того, с какой версией Linux вы хотите его сравнить.