перенаправление потока оболочки linux для непосредственного запуска списка команд - PullRequest
2 голосов
/ 26 июля 2011

У меня есть этот проект SVN ... чтобы получить список не добавленных файлов (в моем случае, сотни):

svn status |grep "^?"

вывод

? somefile.txt
? somefile1.txt
? somefile2.txt

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

svn status | grep "^?"|sed "s/^?/svn add/"

output

svn add somefile.txt
svn add somefile1.txt
svn add somefile2.txt

Я понимаю, что могу просто передать его в файл

svn status | grep "^?"|sed "s/^?/svn add/" >out.sh && sh out.sh && rm out.sh

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

svn status | grep "^?"|sed "s/^?/svn add/" |some_command_that_runs_each_line

Ответы [ 3 ]

3 голосов
/ 26 июля 2011

Вы ищете команду xargs:

svn status | grep "^?" | sed "s/^..//" | xargs svn add

Вы также можете использовать подстановку:

svn add `svn status | grep "^?"` | cut -c 3-`
3 голосов
/ 26 июля 2011

А как насчет bash / sh?

svn status | grep "^?"|sed "s/^?/svn add/" | bash
0 голосов
/ 26 июля 2011

Как насчет:

for i in `svn status | grep "^?"|sed "s/^?/svn add/"`
do
    $i
done
...