エイリアスを使用して、パーティション数と複製を含むKafkaトピックを作成したいと思います。
alias tcreate='bin/kafka-topics.sh --create --topic "$@" --partitions "$@" --replication-factor "$@" --zookeeper localhost:2181'
コマンドを実行すると、tcreate 1 1
次のメッセージが表示されます。
Exception in thread "main" java.lang.IllegalArgumentException: Only one of --bootstrap-server or --zookeeper must be specified
at kafka.admin.TopicCommand$TopicCommandOptions.checkArgs(TopicCommand.scala:743)
at kafka.admin.TopicCommand$.main(TopicCommand.scala:53)
at kafka.admin.TopicCommand.main(TopicCommand.scala)
どのように機能させるのですか?
答え1
bashを使用していると仮定すると、確認する必要がありますGNUバッシュリファレンス:
($ @)は1から始まる位置パラメータに展開されます。
さらに、エイリアスは位置パラメータを取得できません。代わりに、次を使用する必要があります。機能適切位置パラメータ。
次のように定義する必要があります。
tcreate(){
bin/kafka-topics.sh --create --topic "$1" --partitions "$2" --replication-factor "$3" --zookeeper localhost:2181
}
各パラメータはコマンドの特定の場所で置き換えられます。また、相対パスは現在のディレクトリに大きく依存し、この機能は特定の現在のディレクトリでのみ機能するため、シェルスクリプトファイルにフルパスを使用することをお勧めします。
tcreate 1 1
また、3番目のパラメータを正しく入力した場合は欠落しているため、サンプルコマンドでもエラーが発生します。
答え2
これは私にとって効果的です。
alias ktc='f(){ bin/kafka-topics.sh --create --topic "$1" --partitions "$2" --replication-factor "$3" --zookeeper localhost:2181; unset -f f; }; f'
その後、端末で次のコマンドを発行しました。
$ ktc t_name 1 1