별칭을 사용하여 파티션 수와 복제가 포함된 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
또한 세 번째 매개변수를 올바르게 입력한 경우 누락되었기 때문에 예제 명령 에서도 오류가 발생합니다.
답변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