2015-03-31 67 views
0

我有以下命令行:執行字符串命令 - 巴什

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 2015-03-31 03:06:09

+0

另外,任何類似'grep foo |的東西awk'{bar}''通常可以有效地重構爲'awk'/ foo/{bar}''。另見[無用的'grep | awk'](http://www.iki.fi/era/unix/award.html#grep) – tripleee 2015-03-31 04:40:57

回答

2

它管到shell:

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