Привет, сейчас покажу интересную Bash-фичу, которая ну совсем уж неочевидная и про неё мало кто знает.

В Bash-скрипте можно хранить данные, закодированные в Base64. Выглядит это следующим образом:

#!/bin/bash

read_data() {
  mapfile -t DATASET < <(sed '1,/^DATASET/d' "$0" | base64 -d)
}

read_data

echo ${DATASET[@]}

exit 0

DATASET
SGVsbG8gQmFzaERheXM=

Функция read_data считывает данные из самого скрипта. С помощью sed удаляются строки от начала файла до строки DATASET. А затем происходит декодирование оставшихся данных. В конце всё сохраняется в массив DATASET с помощью mapfile и выводится через echo.

Красота! Мой скрипт по итогу выведет на экран «Hello BashDays». Где это можно применить, понятия не имею. Возможно, тебе удастся это куда-нибудь приспособить.

Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
Ещё в этом скрипте мне не нравится exit 0. Если есть мысли, как от него избавиться, велком в комментарии. Я что-то покопался вчера, но так пока и не победил. Если убрать exit 0, оно будет работать, но в конце грязно выругается.

Бери на вооружение, возможно, твой стартап нуждается в этом. Увидимся!