Возможно, его блокирует антивирусный сканер Windows? Я знаю, что пытался установить metasploit на Kali в WSL, и мой антивирусный сканер сошел с ума от всех данных об эксплойтах. Что логично, но я не думал об этом заранее.
echo
печатает свои аргументы, разделенные пробелами, даже если они включают (или генерируют )символов новой строки. Кроме того, он добавляет один символ новой строки в конце своего вывода (, если это неecho -n
).
Используйтеprintf
:
printf '%s\n' {0..4..2}" "{0..2..2}
Когда echo
делает что-то неожиданное, всегда учитывайтеprintf
. После того, как вы ознакомитесь с printf
, он может даже стать вашим первым выбором.
Причина, по которой вы получаете пробел, в том, что начало каждой строки усложнено. Команда echo
выдает аргументы, разделенные пробелом.Каждый аргумент состоит из расширения {0..4..2}
и {0..2..2}
, за которым следует новая строка. Когда вы сложите эти два вместе, вы увидите, что пробел в начале каждой строки на самом деле является пробелом, который echo
испускает между элементами.
На ум приходит несколько решений. Во-первых, если вы не возражаете против пустой строки в начале вывода, вы можете поместить новую строку в начале каждого расширения,
echo -e "\n"{0..4..2}" "{0..2..2}
Другим способом является перебор аргументов и вывод их по отдельности
for seq in {0..4..2}" "{0..2..2}; do echo "$seq"; done
или
echo -e {0..4..2}"\n"{0..2..2} | xargs printf "%d %d\n"