LINUX.ORG.RU

Как каждую строку вывода записать в переменную?

 ,


0

1

Привет, есть команда, которая выводит список

> aptly mirror list -raw
bullseye
jammy
xenial

Мне нужно, подставить это значение в следующую команду (вместо слова «$name»)

aptly snapshot create $name from mirror $name

То есть команда должна отработать по разу для каждой перменной, должно получиться:

aptly snapshot create bullseye from mirror bullseye
aptly snapshot create xenial from mirror xenial
aptly snapshot create jammy from mirror jammy

Таким способом можно сделать часть команды:

aptly snapshot list -raw | xargs -n1 aptly snapshot create

и получится

aptly snapshot create bullseye

Но как сделать дальше, чтобы получилось полностью?

Либо подскажите как каждую строку из вывода «aptly mirror list -raw» записать в переменную, чтобы использовать их в команде: aptly snapshot create $name from mirror $name

Ответ на: комментарий от papin-aziat

Массивы можно эмулировать хэш-табицами. Даже в sh само по себе пространство имён это большая хэш-таблица.

&& echo ‘YES’ это кстати есть и в sh.

seq это сторонняя программа.

Это всё есть в [

всё cut и sed мучаю

разницы пока не вижу

Ну то есть, ты не используешь по большому счёту именно баш :)

лучше массивы не юзать в скриптах

В bash они сложные. В fish ещё более-менее, но тоже бывают wtf, к примеру конкатенация это декартово произведение массивов.

neumond
()
Ответ на: комментарий от neumond

Ну то есть, ты не используешь по большому счёту именно баш :)

Нет, нет, совсем наоборот, как раз наоборот выискиваю и заучиваю башизмы, ибо они как правило короче и/или надёжнее, а про легаси просто внимательно прочитываю, чтобы быть осведомлённым на случай, когда приходится какой-то чужой скриптик почитать.

papin-aziat ★★★★★
()
Ответ на: комментарий от wandrien

Меня это вообще не касается, но я давно приучил себя читать предисловия и прочие размышления на тему, и походу там про тебя где-то говорили, что мол крутые программисты начинают писать на баше в привычной манере и попадают во всякие приключения 😀

сахар [[ ]]

Я думал сахар это чисто про оформление. Ведь эта штука сильно отличается от test и [, просто умеет то же самое в том числе. Она не совершает подстановок (не надо экранировать). Она как и (()) ещё и переменные узнает по именам. А вот то, что туда никто не заглядывает в поисках метасимволов, что делает код приятным на вид, это прямо кайф, ну и родная сестра, (()), забирает на себя всё что связано с числами — тоже красиво сделано. Ну и, конечно, самое главное — возможность сравнивать с шаблонами wildcard & regex. Разве это сахар?

Вот bash даёт больше инструментов, чтобы код был чуть более высокоуровневым.

Походу, что такое высокоуровневый код я тоже совсем не понимаю. Я думал, что shell это уже что-то совсем высокоуровневое, в одном шаге от гуя 😀

papin-aziat ★★★★★
()
Ответ на: комментарий от wandrien

Прошу пардону, я все очки спора и убеждения в теме выбора языка обучения потратил. Так что давайте вы сами как-нибудь документацию прочитаете или в гуге zsh vs bash забъёте, например.

ugoday ★★★★★
()
Ответ на: комментарий от papin-aziat

Если вы пришли из большого программирования, то вы мыслите в терминах односвязных списков, деревьев, массивов, словарей и прочих алгебраических структур данных. И когда их нет, вам прямо физически больно, будто ногу отрезали и кадриль танцевать заставляют.

ugoday ★★★★★
()
Ответ на: комментарий от papin-aziat

Походу, что такое высокоуровневый код я тоже совсем не понимаю.

Высокий уровень означает, что я должен мыслить задачу в терминах предметной области. А если я вынужден тратить бесценный сок своего мозга на необходимость помнить, чем test, [, [[, ( и (( различны меж собою, то это уже само по себе вызывает желание не касаться этой дряни любой ценой.

ugoday ★★★★★
()