bash数组作为kafka主题的参数

cgfeq70w  于 2021-06-04  发布在  Kafka
关注(0)|答案(0)|浏览(185)

我一直在努力一段时间与初始化脚本创建Kafka的主题。由于一些参数需要根据条件传递,我研究发现需要构建bash数组。另一方面,似乎 kafka-topics.sh 无法处理这些。以下脚本(Kafka2.5之前的版本):


# !/bin/bash

args=("--if-not-exists"
  "--create"
  "--zookeeper localhost:2181"
  "--replication-factor 1"
  "--partitions 1"
  "--config retention.ms=-1"
  "--topic test"
)

/usr/local/kafka/bin/kafka-topics.sh "${args[@]}"

给出一个错误:

Exception in thread "main" joptsimple.UnrecognizedOptionException: zookeeper localhost:2181 is not a recognized option
    at joptsimple.OptionException.unrecognizedOption(OptionException.java:108)
    at joptsimple.OptionParser.handleLongOptionToken(OptionParser.java:510)
    at joptsimple.OptionParserState$2.handleArgument(OptionParserState.java:56)
    at joptsimple.OptionParser.parse(OptionParser.java:396)
    at kafka.admin.TopicCommand$TopicCommandOptions.<init>(TopicCommand.scala:576)
    at kafka.admin.TopicCommand$.main(TopicCommand.scala:49)
    at kafka.admin.TopicCommand.main(TopicCommand.scala)

但这显然有效:


# !/bin/bash

/usr/local/kafka/bin/kafka-topics.sh --if-not-exists --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --config retention.ms=-1 --topic test

考虑到 kafka-topics.sh 是bash脚本本身并运行命令:

exec $(dirname $0)/kafka-run-class.sh kafka.admin.TopicCommand "$@"

如果我使用echo创建一个类似的脚本,并按照第一个代码段中的描述传递参数,那么这很好:


# !/bin/bash

exec echo "$@"

有没有一种方法可以正确地将参数作为数组传递给 kafka-topics.sh ?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题