2015-03-31 6 views
0

Я имею следующую командную строку:Выполнение команды строки - Bash

egrep '^[0-9]' /etc/hosts | grep -v 127.0.0.1 | awk 'NR==1{ips=$1} NR>1{ips=ips ", " $1} $2=="namenode"{nn=$1} END{ printf "/opt/mapr/server/configure.sh -C %s -Z %s -N mycluster --create-user -D /dev/xvdb\n", ips, nn}' 

И что продюсирует командной строки, которые я использую в своей повар поваренной книги, чтобы начать MapR кластера:

/opt/mapr/server/configure.sh -C 10.32.237.251 -Z 10.32.237.251 -N mycluster --create-user -D /dev/xvdb 

Моя первая команда только распечатывает эту команду. Как я могу изменить эту команду или добавить что-нибудь еще, чтобы автоматически выполнить команду, созданную awk?

+0

ли 'eval' делать то, что вы хотите? – Barmar

+0

Как в сторону, что-то похожее на 'grep foo | awk '{bar}' 'обычно можно плодотворно реорганизовать на' awk '/ foo/{bar}' '. См. Также [бесполезное использование 'grep | awk'] (http://www.iki.fi/era/unix/award.html#grep) – tripleee

ответ

2

Pipe его оболочки:

egrep '^[0-9]' /etc/hosts | grep -v 127.0.0.1 \ 
    | awk 'NR==1{ips=$1} 
      NR>1{ips=ips ", " $1} 
      $2=="namenode"{nn=$1} 
      END{ printf "/opt/mapr/server/configure.sh -C %s -Z %s -N mycluster --create-user -D /dev/xvdb\n", ips, nn}' \ 
    | bash 
Смежные вопросы