@Valery_A

Как правильно передать переменные из файла в bash?

Всем доброго времени. У меня небольшой опыт в bash, но я прочитал все что нашел, прежде чем написать сюда. У меня есть текстовый файл со строками:

disk1
disk2
disk3
Этот файл - результат команды:

disk list | awk -F"|" '/backup/ {print $3}' | sed s/' '//g > backupdisks.txt

Если получится от него отказаться, и вывод команды и сразу преобразовывать вывод команды в переменные, будет еще лучше. Количество строк может меняться время от времени. Мне нужно в скрипте bash взять эти строки и вставить в команду

snapshot create --name ${disk}-$now --disk-name ${disk}

Я не понимаю как импортировать каждую строку в переменную disk1 , disk2... чтобы потом также подставить их во вторую команду. я прочитал и попробовал

while read -r disk
do
echo "${disk}"
done < backupdisks.txt
_________________________
read var2 var3
echo "var2 = $var2 var3 = $var3"
________________________
file=backupdisks.txt
while IFS= read -r line
do
# echo line is stored in $line
echo $line
done < "$file"
________________________
Наверное я никак не могу понять как это работает.
  • Вопрос задан
  • 1197 просмотров
Решения вопроса 1
paran0id
@paran0id
Умный, но ленивый
for disk in `disk list | awk -F"|" '/backup/ {print $3}' | sed s/' '//g`
do
    snapshot create --name ${disk}-$now --disk-name ${disk}
done
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Valery_A Автор вопроса
Простейший бэкап через снапшоты на Yandex Cloud

#!/bin/bash
getDate() {
date '+%d%m%Y'
}
getDate1() {
date '+%d%m%Y' --date='3 days ago'
}
now=$(getDate)
del=$(getDate1)

for disk in `yc compute disk list --folder-id "id вашей папки" | awk -F"|" '/backup/ {print $3}' | sed s/' '//g`
do
(
yc compute snapshot create --folder-id "id вашей папки" --name ${disk}-$now --disk-name ${disk} &&\
yc compute snapshot delete --folder-id "id вашей папки" --name ${disk}-$del
) & disown
done
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы