Используйте tr
для удаления пробелов:
$ echo {0..9} | tr -d ' '
tr
справочная страница:
-d, --delete
delete characters in SET1, do not translate
seq
позволяет указать разделитель с помощью-s
:
$ seq -s '' 0 9
012345678
Для записи обратите внимание, что {0..9}
исходит из zsh
.
Подобно csh {a,b}
, на котором он основан, он расширяется до отдельных аргументов.
Таким образом, для того, чтобы они были объединены вместе на выходе, вам нужна команда, которая печатает или может печатать свои аргументы, объединенные друг с другом, напримерprintf
:
printf %s {0..9}
(хотя это не печатает завершающую новую строку, см. ответ αғsнιη , чтобы обойти это)
Или добавьте дополнительный шаг, выполняющий соединение.
В zsh
вы можете соединять элементы массива без промежуточных элементов с помощью ${(j[])array}
, поэтому вы можете использовать анонимную функцию, например:
() { print ${(j[])@}; } {0..9}
или
function { print ${(j[])@}; } {0..9}
В Korn -подобно оболочкам (, включая bash
и zsh
), для соединения элементов любого массива ничем,вы используете "${array[*]}"
, пока $IFS
пусто:
set {0..9}
IFS=
echo "$*"
(здесь используется echo
вместо print
, как будто bash
является оболочкой, похожей на Korn -даже больше, чем zsh, она не реализует встроенную print
).
С помощью bash
или zsh
вы также можете выполнить объединение в переменную с помощью:
printf -v var %s {0..9}
echo $'\e[D'{0..9}
0123456789
В терминале он выглядит сплошным, но на самом деле соединяется разделителем из управляющих последовательностей терминала.
echo $'\e[D'{0..9} | cat -vet
^[[D0 ^[[D1 ^[[D2 ^[[D3 ^[[D4 ^[[D5 ^[[D6 ^[[D7 ^[[D8 ^[[D9$
'\e[D'
-переместить курсор влево echo $'string'
илиecho -e 'string'
-позволяют интерпретировать символы обратной косой черты.