Передавать аргументы как псевдоним для создания тем Kafka

Еще одно решение, использующее sedи экранирование ANSI с использованием регулярного выражения Стивена Харриса:

<file sed "1s/\(.*\)/\x1b[1m\1\x1b[0m/" | column -s\; -t

где \x1b— шестнадцатеричное значение восьмеричного числа \033, которое используется в escape-последовательности ANSI, например

printf '\033[1m%s\033[0m\n' hello
# or
printf '\x1b[1m%s\x1b[0m\n' world
0
29.06.2021, 08:39
2 ответа

Предполагая, что вы используете bash, вам следует обратиться к справочнику по GNU Bash:

($@) Expands to the positional parameters, starting from one.

Кроме того, псевдонимы не могут получать позиционные параметры. Вместо этого вы должны использовать функции с соответствующими позиционными параметрами .

Вот что вы должны определить:

tcreate(){
bin/kafka-topics.sh --create --topic "$1" --partitions "$2" --replication-factor "$3" --zookeeper localhost:2181
}

так что каждый аргумент заменяется на свое конкретное место в команде. Я бы также рекомендовал использовать полные пути для файлов сценариев оболочки, потому что относительные пути сильно зависят от текущего каталога, и функция будет работать только в определенном текущем каталоге.

Кроме того, ваш пример команды tcreate 1 1 также вызовет ошибку, поскольку третий параметр отсутствует, если вы ввели его правильно.

1
28.07.2021, 11:21

Вот что мне подходит:

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
0
28.07.2021, 11:21

Теги

Похожие вопросы