Авторский блог от действующего девопса
Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу.
Автор: Роман Шубин
Реклама: @maxgrue
MAX: https://max.ru/bashdays
Курс: @tormozilla_bot
Блог: https://bashdays.ru
Post #530
10.9K
Здрасти, здрасти, давно не виделись. Сегодня… Аааа по ходу дела разберемся, погнали!
Есть у меня текстовый файл, вида:
И есть условный bash скрипт, который должен прочитать этот файл и присвоить значения переменным, чтобы получилось так:
Сначала прикидываем в голове алгоритм — читаем файл построчно, цикл вся хуйня, делаем что-то на подобии массива и дальше по накатанной. Это всё понятно, классика.
Но решим мы её как обычно через жопу:
Охуенно? ДА! Теперь давай разберем чо происходит.
В переменную «n» зачитываемрэпчанский текстовый файл
Это так, к слову, если любишь рэп — ничо против не имею.
Конструкция
По итогу переменная «n» содержит в себе весь текст из файла
Ну а магическая поебень
Символ «--» перед set = сброс всех предыдущих позиционных параметров и установка новых.
Можно конечно сделать проще, но проще это не для нас:
Тут содержимое файла
Итого получаем аналогичную картинку:
Такие вот дела, накидывайте в комменты еще варианты упоротых решений, простые не интересны.
tags: #bash
—
🔔 @bashdays
Есть у меня текстовый файл, вида:
bashdays.ru/1
bashdays.ru/2
bashdays.ru/3
bashdays.ru/4
bashdays.ru/5
И есть условный bash скрипт, который должен прочитать этот файл и присвоить значения переменным, чтобы получилось так:
$1 = bashdays.ru/1
$2 = bashdays.ru/2
$3 = bashdays.ru/3
$4 = bashdays.ru/4
$5 = bashdays.ru/5
Сначала прикидываем в голове алгоритм — читаем файл построчно, цикл вся хуйня, делаем что-то на подобии массива и дальше по накатанной. Это всё понятно, классика.
Но решим мы её как обычно через жопу:
#!/bin/bash
n=$(<bashdays.txt)
set -- $n
echo $1 # bashdays.ru/1
echo $2 # bashdays.ru/2
echo $3 # bashdays.ru/3
...
echo $@ # bashdays.ru/2 bashdays.ru/3 ...
Охуенно? ДА! Теперь давай разберем чо происходит.
В переменную «n» зачитываем
bashdays.txt с нашим списком урлов.Как сказал Паук — Рэп это кал!
Это так, к слову, если любишь рэп — ничо против не имею.
Конструкция
$( < ) аналогична команде «cat», выполняет замену с подстановкой == $(cat bashdays.txt).По итогу переменная «n» содержит в себе весь текст из файла
bashdays.txtНу а магическая поебень
set -- $n устанавливает позиционные параметры на основе содержимого переменной «n». То есть решает нашу задачу.Символ «--» перед set = сброс всех предыдущих позиционных параметров и установка новых.
Можно конечно сделать проще, но проще это не для нас:
cat bashdays.txt | xargs ./script.sh
Тут содержимое файла
bashdays.txt передается в скрипт и скрипт получает эти параметры в качестве аргументов.#!/bin/bash
echo $1
echo $2
echo $3
echo $@
Итого получаем аналогичную картинку:
bashdays.ru/1
bashdays.ru/2
bashdays.ru/1 bashdays.ru/2 ...
Такие вот дела, накидывайте в комменты еще варианты упоротых решений, простые не интересны.
tags: #bash
—
🔔 @bashdays

