我一直在努力一段时间与初始化脚本创建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
?
暂无答案!
目前还没有任何答案,快来回答吧!