@wiich_ls

Как передать переменной в качестве аргумента вывод команды построчно?

Вводные данные: список серверов который состоит из 3 хостов разделённых новой строкой
ip
ip

Необходимо: передать список построчно циклу для выполнения команд внутри него

Текущее решение
iter=0
maxiter=$( cat file.txt | awk '{print $1}'  | sort -u | wc -l )

 while [ $iter  -ne $maxiter ]
 do
         eval cat=(`cat file.txt | awk '{print $1}'  | sort -u`)
         touch spisok-${cat[$iter]}.txt
         iter=$(( $iter+1 ))
 done


Проблемы которую тут вижу я - использование двух переменных (хотелось бы узнать как можно их в данном случае задействовать по минимуму), отходит от изначальной идеи передавать в качестве аргумента для while полинейного вывода команды cat и оперировать им. Если в целом код можно улучшить (сделать его более логичным или правильным), то просьба описать такой вариант
  • Вопрос задан
  • 240 просмотров
Решения вопроса 1
#!/bin/bash
awk '{print $1}' < file.txt | sort -u | while read a
do
   >spisok-$a.txt
done
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
hint000
@hint000
у админа три руки
#!/bin/bash
cat file.txt | awk '{print "spisok-"$1}' | sort -u | xargs touch
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы