Функциональный язык для тех, кто не хочет тратить время на изучение нюансов Bash.
В мире Linux и DevOps-инструментов появился любопытный новичок - Для просмотра ссылки Войдиили Зарегистрируйся , язык программирования нового поколения, ориентированный на создание bash -скриптов. Этот открытый проект, распространяемый под лицензией GPL 3.0, предлагает совершенно иной подход к написанию кода для Bash.
Amber позволяет разработчикам писать на современном высокоуровневом языке с синтаксисом, подобным ECMAScript. Код затем компилируется в bash-скрипт, который можно запустить напрямую или использовать в любом другом месте.
В качестве примера, вот как выглядит простой скрипт на языке Amber:
<span style="font-family: monospace;">// Define variables </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> let name = "John" </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> let age = 30 </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> // Display a greeting </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> echo "Hello, my name is {name}" </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> // Perform conditional checks </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> if age < 18 { </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> echo "I'm not an adult yet" </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> } else { </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> echo "I'm an adult" </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> } </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> // Loop through an array </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> let fruits = ["apple", "banana", "cherry", "date"] </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> echo "My favorite fruits are:" </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> loop fruit in fruits { </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> echo fruit </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> }</span>
После компиляции программа преобразует скрипт test.ab в bash-скрипт test.sh со следующим содержимым:
<span style="font-family: monospace;">__0_name="John"; </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> __1_age=30; </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> echo "Hello, my name is ${__0_name}"; </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> if [ $(echo ${__1_age} '<' 18 | bc -l | sed '/\./ s/\.\{0,1\}0\{1,\}$//') != 0 ]; then </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> echo "I'm not an adult yet" </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> else </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> echo "I'm an adult" </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> fi; </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> __AMBER_ARRAY_0=("apple" "banana" "cherry" "date"); </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> __2_fruits=("${__AMBER_ARRAY_0[@]}"); </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> echo "My favorite fruits are:"; </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> for fruit in "${__2_fruits[@]}" </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> do </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> echo "${fruit}" </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> done</span>
Создатели Amber утверждают, что их язык обеспечивает типобезопасность и безопасность времени выполнения, что помогает избежать ошибок, с которыми зачастую сталкиваются начинающие при работе с классическими bash-скриптами. Предупреждения об ошибках в Amber гораздо более понятны, чем лаконичные сообщения Bash.
Установка Amber на Linux довольно проста - достаточно выполнить одну команду в терминале. После установки пользователи получают доступ к Для просмотра ссылки Войдиили Зарегистрируйся для изучения нового языка.
Amber ориентирован на новое поколение разработчиков, которые предпочитают более простые в использовании и функциональные инструменты, скрывающие низкоуровневые детали реализации. Подобно Warp Terminal, созданному для пользователей, избегающих работы с классическим Linux-терминалом, Amber упрощает написание bash-скриптов для тех, кто не чувствует себя уверенно в традиционном bash-скриптинге.
Хотя опытные системные администраторы, привыкшие к Bash, вряд ли оценят Amber, этот язык может стать отличным выбором для тех, кто только начинает осваивать облачные технологии и DevOps.
В мире Linux и DevOps-инструментов появился любопытный новичок - Для просмотра ссылки Войди
Amber позволяет разработчикам писать на современном высокоуровневом языке с синтаксисом, подобным ECMAScript. Код затем компилируется в bash-скрипт, который можно запустить напрямую или использовать в любом другом месте.
В качестве примера, вот как выглядит простой скрипт на языке Amber:
<span style="font-family: monospace;">// Define variables </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> let name = "John" </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> let age = 30 </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> // Display a greeting </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> echo "Hello, my name is {name}" </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> // Perform conditional checks </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> if age < 18 { </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> echo "I'm not an adult yet" </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> } else { </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> echo "I'm an adult" </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> } </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> // Loop through an array </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> let fruits = ["apple", "banana", "cherry", "date"] </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> echo "My favorite fruits are:" </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> loop fruit in fruits { </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> echo fruit </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> }</span>
После компиляции программа преобразует скрипт test.ab в bash-скрипт test.sh со следующим содержимым:
<span style="font-family: monospace;">__0_name="John"; </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> __1_age=30; </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> echo "Hello, my name is ${__0_name}"; </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> if [ $(echo ${__1_age} '<' 18 | bc -l | sed '/\./ s/\.\{0,1\}0\{1,\}$//') != 0 ]; then </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> echo "I'm not an adult yet" </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> else </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> echo "I'm an adult" </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> fi; </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> __AMBER_ARRAY_0=("apple" "banana" "cherry" "date"); </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> __2_fruits=("${__AMBER_ARRAY_0[@]}"); </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> echo "My favorite fruits are:"; </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> for fruit in "${__2_fruits[@]}" </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> do </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> echo "${fruit}" </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> </span>
<span style="font-family: monospace;"> </span> <span style="font-family: monospace;"> done</span>
Создатели Amber утверждают, что их язык обеспечивает типобезопасность и безопасность времени выполнения, что помогает избежать ошибок, с которыми зачастую сталкиваются начинающие при работе с классическими bash-скриптами. Предупреждения об ошибках в Amber гораздо более понятны, чем лаконичные сообщения Bash.
Установка Amber на Linux довольно проста - достаточно выполнить одну команду в терминале. После установки пользователи получают доступ к Для просмотра ссылки Войди
Amber ориентирован на новое поколение разработчиков, которые предпочитают более простые в использовании и функциональные инструменты, скрывающие низкоуровневые детали реализации. Подобно Warp Terminal, созданному для пользователей, избегающих работы с классическим Linux-терминалом, Amber упрощает написание bash-скриптов для тех, кто не чувствует себя уверенно в традиционном bash-скриптинге.
Хотя опытные системные администраторы, привыкшие к Bash, вряд ли оценят Amber, этот язык может стать отличным выбором для тех, кто только начинает осваивать облачные технологии и DevOps.
- Источник новости
- www.securitylab.ru