Привет, сейчас покажу интересную bash фичу. Которая ну совсем уж не очевидная и про нее мало кто знает.
В bash скрипте можно хранить данные, закодированные в base64. Выглядит это следующим образом:
Функция read_data считывает данные из самого скрипта. С помощью sed удаляются строки от начала файла до строки DATASET. А затем происходит декодирование оставшихся данных. В конце всё сохраняется в массив DATASET с помощью mapfile и выводится через echo.
Красота! Мой скрипт по итогу выведет на экран «Hello BashDays». Где это можно применить, понятия не имею. Возможно тебе удастся это куда-нибудь приспособить.
Еще в этом скрипте мне не нравится exit 0, если есть мысли как от него избавиться, велком в комментарии. Я чет покопался вчера, но так пока и не победил. Если убрать exit 0, оно будет работать, но в конце грязно выругается.
Бери на вооружение, возможно твой стартап нуждается в этом. Увидимся!
tags: #bash
—
💩 @bashdays
В 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». Где это можно применить, понятия не имею. Возможно тебе удастся это куда-нибудь приспособить.
Еще в этом скрипте мне не нравится exit 0, если есть мысли как от него избавиться, велком в комментарии. Я чет покопался вчера, но так пока и не победил. Если убрать exit 0, оно будет работать, но в конце грязно выругается.
Бери на вооружение, возможно твой стартап нуждается в этом. Увидимся!
tags: #bash
—