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

Компьютерный форум 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

 

Аватара для xamelion

Пользователь


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

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


Незнаю как другие, я неуловил в вопросе что нужно зделать

Отправлено: 09:20, 22-09-2005 | #2



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

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

mar mar вне форума

Аватара для mar

just mar


Moderator


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

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


shivtorov
действительно ничего не понятно
если просто хотите выполнить две команды подряд, то выполняйте на здоровье
Код: Выделить весь код
ls; who;
если хотите передавать результат одной команды другой, импользуйте |
если что-то другое - напишите, но попонятней, pls

Отправлено: 09:43, 22-09-2005 | #3


Аватара для fossil

Ветеран


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

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


Код: Выделить весь код
'echo ls' ; 'echo who'

-------
Согласно непопулярному мнению, Windows - враждебная ОС.
Так получилось, что Windows не выбирает себе друзей.


Отправлено: 09:59, 23-09-2005 | #4


Аватара для Yura

Пользователь


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

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


В данном случае должно работать: 'echo ls;' ; 'echo who;'.
А вообще хотелось бы на сам скрипт посмотреть.

-------
При сбое - выдерни шнур, выдави стекло


Отправлено: 18:34, 24-09-2005 | #5


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


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

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


Ситуация такая:
Поставил RedHat Enterprise Linux 3 в минимальной конфигурации.
Потом решил доустановить X. Пришлось в одной консоли в vi открыть файлик comps.xml, в котором описаны все пакеты дистрибутива, а в другой консоли для каждого нужного мне пакеты рачками исполнять rpm -i ...
Быстро понял, что это очень геморно и решил научиться-таки пользоваться базовами иниксовыми инструментами. Вот и сваял такую командочку:
Код: Выделить весь код
cat ../base/comps.xml | sed '0,/base-x/d' | sed '0,/packagelist/d' | sed '/packagelist/,$d' | grep mandatory | sed s/.*\"\>/"find . -name \""/ | sed s/\<.*/"-\[0-9]*\" -exec rpm -ivh --aid {} \\\;"/
Эта штука выдает на консоль результат:
Код: Выделить весь код
   find . -name "bitmap-fonts-[0-9]*" -exec rpm -ivh --aid {} \;
   find . -name "desktop-backgrounds-basic-[0-9]*" -exec rpm -ivh --aid {} \;
   find . -name "switchdesk-[0-9]*" -exec rpm -ivh --aid {} \;
   			    ....... output trancated ........
А когда я свою командочку обрамляю ``, то эта сволочь не работает ((
Пробывал по совету Yura :
Код: Выделить весь код
cat ../base/comps.xml | sed '0,/base-x/d' | sed '0,/packagelist/d' | sed '/packagelist/,$d' | grep mandatory | sed s/.*\"\>/"\`find . -name \""/ | sed s/\<.*/"-\[0-9]*\" -exec rpm -ivh --aid {} \\\;\` ;"/
теперь эта штука выдает:
Код: Выделить весь код
   `find . -name "bitmap-fonts-[0-9]*" -exec rpm -ivh --aid {} \;` ;
    `find . -name "desktop-backgrounds-basic-[0-9]*" -exec rpm -ivh --aid {} \;` ;
   `find . -name "switchdesk-[0-9]*" -exec rpm -ivh --aid {} \;` ;
   			    ....... output trancated ........
Но она все равно не запускается с помощью ``. Только теперь ругается по другому. Если в первоначальном варианте проблема была в том, что все строки воспринимались системой как аргументы первого find, то теперь на исполнения идут не команды find, промежуточный результат получившийся после предпоследненго sed-а.

Как же мне все-таки запустить на исполнение мои find-ы?
Я нашел только одно решение - сохранить их в файлик, сделать его исполняемым и запускать уже файлик. Этот вариант полностью работает, но это неспортивно, обходной маневр - а я то хочу начиться пользоваться базовами инструментами.

Помогите запустить мои find-ы!!!

Отправлено: 06:51, 02-10-2005 | #6


Аватара для bdancer

Старожил


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

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


>Потом решил доустановить X.

И ради этого надо так извращаться???????

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


Отправлено: 12:59, 02-10-2005 | #7


Аватара для BeerMan

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

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


...а не проще почитать доки по yum??? в Красной Шляпе оно вроде есть...

-------
...Минздрав предупреждает: Интернет может вызвать зависимость...


Отправлено: 19:42, 02-10-2005 | #8


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


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

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


to BeerMan
to bdancer
Как решить задачу обходным маневром я знаю (описывал его в своем посте). Меня интересует как решить задачу в лоб - в основном в учебных целях. Это ведь базовые инструменты и ими необходимо уметь пользоваться.

to Модераторы
Перебросьте, пожалуйста, эту тему в раздел программирование. Наверное, эта тема ближе к тому разделу.

Отправлено: 08:47, 03-10-2005 | #9


Аватара для gf100

Ветеран


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

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


А попробовать добавить за строкой | sh или | bash

Последний раз редактировалось gf100, 03-10-2005 в 17:35.

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

Отправлено: 14:39, 03-10-2005 | #10



Компьютерный форум 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




 
Переход