将 kafka 代理 ID(zookeeper-shell.sh 结果)保存到 bash 脚本中的变量

Save kafka broker ids (zookeeper-shell.sh result) to variable in bash script

我想检查代理 ID 是否已被使用,但我想在脚本中执行此操作。

./bin/zookeeper-shell.sh localhost:2181 <<< "ls /brokers/ids"

给出了我想要的结果,但我如何将其保存到变量中供以后使用?我感兴趣的是 "ls .." 的实际结果。整个输出包括一些饲料:

Connecting to localhost:2181
Welcome to ZooKeeper!
JLine support is disabled

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
Node does not exist: /brokers/ids

如果我将结果保存到一个变量中,我实际上只会得到这个饲料,最后一行只会打印到屏幕上。

var=$(./opt/kafka/bin/zookeeper-shell.sh localhost:2181 <<< "ls /brokers/ids")

然后 echo $var 给出

Connecting to localhost:2181 Welcome to ZooKeeper! JLine support is disabled WATCHER:: WatchedEvent state:SyncConnected type:None path:null

如何将请求的实际结果获取到变量以供以后使用?

我最终没有使用该脚本,如果有人仍然可以使用该脚本,那将不胜感激,但我最终是如何做到的:

brokerIDs=$(echo dump | nc localhost 2181 | grep brokers/ids | sed 's/\/brokers\/ids\///')

然后去检查

if echo ${brokerIDs[@]} | grep -q -w $newNodeBrokerId; 
then      
    echo "Broker with that id already up";
else      
    echo "Starting Kafka"; 
    # Start kafka service here
fi

您可以使用以下方法获取输出的最后一行:

./zookeeper-shell.sh localhost:2181 <<< "ls /brokers/ids" | tail -n 1