Новости Amber: ваша новая суперсила в мире непонятных bash-скриптов

NewsMaker

I'm just a script
Премиум
13,579
20
8 Ноя 2022
Функциональный язык для тех, кто не хочет тратить время на изучение нюансов Bash.


qy14pszozll7pgnvqkeufimrvylzjrz4.jpg


В мире 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.
 
Источник новости
www.securitylab.ru

Похожие темы