Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Linux и FreeBSD » Общий по Linux » bash: Как выполнить многострочный результат другой команды

Ответить
Настройки темы
bash: Как выполнить многострочный результат другой команды

Новый участник


Сообщения: 9
Благодарности: 1

Профиль | Отправить PM | Цитировать


Некий набор grep-ов, sed-ов и awk-ов генерит последовательность строк команд. Их необходимо выполнить. Как это сделать?

Тривиальный пример:
Код: Выделить весь код
echo ls ; echo who
дает результат
Код: Выделить весь код
ls
who
Пытаемся выполнить следующим образом
Код: Выделить весь код
`echo ls ; echo who`
получаем сообщение об ошибке:
Код: Выделить весь код
ls: who: No such file or directory
Это происходит потому, что все строки у меня "склеиваются" в одну команду.
Если команды в `` наколбасят ровно одну строку/команду, то все рабоает.

Как их разделить на две команды?

Отправлено: 07:14, 22-09-2005

 

Аватара для bdancer

Старожил


Сообщения: 170
Благодарности: 1

Профиль | Сайт | Отправить PM | Цитировать


Кривовато конечно (вместо двух sed'ов одного бы хватило, но... )), тока path на пути замени.
Код: Выделить весь код
for package in `cat /path/comps.xml | sed '0,/base-x/d' | sed '0,/packagelist/d' | sed '/packagelist/,$d' | grep mandatory | sed 's/.*\">//' | sed 's/<\/.*//'`;
do
	echo "Searching and installing package: $package..."
	find <path> -name "$package-[0-9]*" -exec rpm -ivh --aid {} \;
done

-------
Linux User Group Of Ryazan (LUGR)

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:37, 03-10-2005 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 9
Благодарности: 1

Профиль | Отправить PM | Цитировать


Respect qt100 and bdancer

qt100 попал в точку - как раз то, что я и хотел получить. Respect!
Вариант bdancer-а чуть глубже в программинг, но радует дополнительным фунционалом. Respect!

Мой итоговый рабочий вариант (с учетом пожеланий bdancer-а)
Код: Выделить весь код
cat ../base/comps.xml |
sed -e '0,/base-x/d' -e '0,/packagelist/d' -e '/packagelist/,$d'| 
grep manda | 
sed -e 's/.*\"\>/"find . -name \""/' -e 's/\<.*/"-\[0-9]*\" -exec rpm -ivh --aid {} \\\; ;"/' | 
bash
Кстати, есть какие-нибудь достоверные сведения о различии в быстродействии двух вариантов:
1) sed <параметры> | sed <параметры> | sed <параметры>
2) sed -e <параметры> -e <параметры> -e <параметры>
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:18, 03-10-2005 | #12


Аватара для bdancer

Старожил


Сообщения: 170
Благодарности: 1

Профиль | Сайт | Отправить PM | Цитировать


shivtorov
Я немного не то имел в виду, просто описал неправильно.
Я про свой вариант и два последних sed'a (sed 's/.*\">//' | sed 's/<\/.*//'` которые вырезают название пакета, там точно одним regex'пом можно обойтись.

>о различии в быстродействии двух вариантов
2-ой имхо быстрее ибо пайпов нет, хотя черт его знает.

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

-------
Linux User Group Of Ryazan (LUGR)


Последний раз редактировалось bdancer, 04-10-2005 в 19:10.


Отправлено: 10:20, 04-10-2005 | #13



Компьютерный форум OSzone.net » Linux и FreeBSD » Общий по Linux » bash: Как выполнить многострочный результат другой команды

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Как записать в переменную результат выполнения команды? MSI Скриптовые языки администрирования Windows 64 24-12-2020 18:20
Разное - [решено] Не сохраняются команды в строке выполнить, пароли к Opera ... lostd Microsoft Windows 7 4 15-03-2018 00:36
Выполнить CMD на другой машине, , имея пароль администратора домена? Rockie Microsoft Windows NT/2000/2003 3 29-09-2009 05:36
Ошибка - [решено] Из меню "Выполнить" не выпоняются команды val674 Microsoft Windows 2000/XP 8 19-08-2009 15:19
разный результат команды "browstat status" на разных компьютерах RSM2 Сетевые технологии 2 25-04-2006 09:44




 
Переход