执行字符串命令-Bash

执行字符串命令-Bash,bash,shell,unix,awk,grep,Bash,Shell,Unix,Awk,Grep,我有以下命令行: 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}' 这将生成一个命令行,我将在我的厨师

我有以下命令行:

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
生成的命令?

将其导入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

eval
做你想做的事吗?顺便说一句,任何类似于
grep foo | awk'{bar}'
的东西通常都可以有效地重构为
awk'/foo/{bar}'
。另见