Я хочу прочитать строку, содержащую несколько (число не определено) хостов Kafka и перечислить их в отдельных строках с помощью cmd for
.
Строка имеет вид:
host1:9092,host2:9092,host3:9092,...
И вот что у меня есть:
set /p BOOTSTRAPSERVERS="Bootstrap servers with port, separated by comma(by default localhost:9092): "
REM echo "%BOOTSTRAPSERVERS%"
if "%BOOTSTRAPSERVERS%"=="" set BOOTSTRAPSERVERS="localhost"
echo All the servers to connect:
FOR /F "usebackq delims=," %%i in (`echo %BOOTSTRAPSERVERS%`) do (
echo %%i
echo.
)
Но я получаю все хосты в одну строку, разделенные пробелом:
All the servers to connect:
host1:9092 host2:9092 host3:9092
Почему?
Если я включу @echo on
, я вижу это, что не имеет смысла:
set /p BOOTSTRAPSERVERS="Bootstrap servers with port, separated by comma(by default localhost:9092): "
Bootstrap servers with port, separated by comma(by default localhost:9092): host1:9092,host2:9092,host3:9092
REM echo "host1:9092,host2:9092,host3:9092"
if "host1:9092,host2:9092,host3:9092" == "" set BOOTSTRAPSERVERS="localhost"
echo All the servers to connect:
All the servers to connect:
FOR /F "usebackq delims=," %i in (`echo host1:9092 host2:9092 host3:9092`) do (
echo %i
echo.
)
(
echo host1:9092
echo.
)
host1:9092
Если вы внимательно наблюдаете, echo
превращает строку из запятой в пробел, если %BOOTSTRAPSERVERS%
не заключено в двойные кавычки.
Если в двойных кавычках выводится:
"host1:9092
Почему?
Есть ли лучший способ разбить строку с разделителями?