LINUX.ORG.RU

перебор переменных из файла

 ,


0

1

Подскажите, как правильно реализовать цикл в bash перебора переменных из файла. Есть фаил test с таким содержанием, после каждой строки перевод строки

  • time=2022-02-28 17:22:49.00
  • video=MULTX.mp4
  • duration=600000
  • time=2022-02-28 17:32:50.00
  • video=watch01s.mp4
  • duration=771000
  • time=2022-02-28 17:45:42.00
  • video=Kuznechik.mp4
  • duration=574800
  • time=2022-02-28 18:00:00.00
  • video=1s_C_PAR.mp4
  • duration=3120000

Надо в каждом проходе цикла получать три переменные time video duration

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



Последнее исправление: Demm21 (всего исправлений: 4)
Ответ на: комментарий от ashot

Не, все же немного не так. оставил в входном файле только значения 2022-02-28 17:22:49.00
MULTX.mp4
600000
2022-02-28 17:32:50.00
watch01s.mp4
771000
2022-02-28 17:45:42.00
Kuznechik.mp4
574800
2022-02-28 18:00:00.00
1s_C_PAR.mp4
3120000

Поправил код
#!/bin/bash
FILENAME=«file»
z=0
while IFS=‘\n’ read a ; do
case $z in
0) t=«$a»; z=1;;
1) v=«$a»; z=2;;
2) d=«$a»; z=0;;
esac
echo $t $v $d
done < $FILENAME

Получаю
2022-02-28 17:22:49.00
2022-02-28 17:22:49.00 MULTX.mp4
2022-02-28 17:22:49.00 MULTX.mp4 600000
2022-02-28 17:32:50.00 MULTX.mp4 600000
2022-02-28 17:32:50.00 watch01s.mp4 600000
2022-02-28 17:32:50.00 watch01s.mp4 771000
2022-02-28 17:45:42.00 watch01s.mp4 771000
2022-02-28 17:45:42.00 Kuznechik.mp4 771000
2022-02-28 17:45:42.00 Kuznechik.mp4 574800
2022-02-28 18:00:00.00 Kuznechik.mp4 574800
Те вначале не хватает переменных, а потом двоятся и перемешиваются

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

echo $t $v $d

Так не сработает. Можно:

0) t="$a"; z=1; echo "$t";;
1) v="$a"; z=2; echo "$v";;
2) d="$a"; z=0; echo "$d";;

Или так:


0) t="$b"; z=1;;
1) v="$b"; z=2;;
2) d="$b"; z=0; echo "$t $v $d";;
ashot ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.