Если вы хотите сохранить какой-то текст дословно, обычно проще использовать следующий синтаксис:
mycommand=$(cat << 'EOF'
"${KAFKA_HOME}/bin/kafka-console-consumer.sh" --zookeeper localhost:2181 --topic "$TOPIC" |
while IFS= read -r line; do
printf '[%s | %20s] %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$TOPIC" "${line}";
done | tee -a kafka.out
EOF
)
В ksh93
, bash
или zsh
, вы также можете сделать это:
mycommand=$(<<'EOF'
....
EOF
В ksh93
, который оптимизирует выполнение команды cat и fork, а с bash
только exec (в zsh
, это не имеет значения).
В mksh
:
mycommand=<<'EOF'
...
EOF
И затем:
export TOPIC KAFKA_HOME
for TOPIC in "${topics[@]}"; do
xterm -T "$TOPIC" -e "$mycommand" &
done
Здесь я бы использовал ts
для отметки времени ввода (или сделал это в gawk
или perl
, если ts
недоступен) вместо этого очень неэффективного цикла при чтении
.
ts '[%F %T | mytopic]'
Согласно документации, только эти флаги документированы
UP, LOOPBACK, BROADCAST, POINTOPOINT, MULTICAST, PROMISC, ALLMULTI, NOARP, DYNAMIC, SLAVE
Другие флаги существуют, их можно увидеть в угловых скобках, но они либо устарели (NOTRAILERS), либо не реализованы (DEBUG), либо специфичны для определенных устройств (MASTER, AUTOMEDIA и PORTSEL). Мы не будем не будем обсуждать их здесь...
Попробуйте узнать марку/название вашего сетевого интерфейса.
lspci -v
Поищите в Интернете технические подробности этого nic.