Как я могу расширить с скобками, но использовать запятые вместо пробелов в качестве сепараторов на выходе?

Убедитесь, что вашим JDK по умолчанию является Oracle JDK, а не OpenJDK. Многие дистрибутивы поставляются с OpenJDK по умолчанию из-за проблем с лицензированием, и даже если вы установите Oracle JDK, он может не быть по умолчанию.Запуск java -version из терминала должен сказать вам, какая версия используется по умолчанию.

2
13.12.2018, 22:37
3 ответа

Со встроенными модулями Bash:

Это немного некрасиво, так как нам нужно разделить 5, чтобы избежать запятой в конце:

$ printf '%s,' {1..4}; echo 5
1,2,3,4,5

Хотя, поскольку printfможет выводить данные непосредственно в переменную, это можно обойти и удалить последнюю запятую с помощью расширения параметра:

$ printf -v tmpvar "%s," {1..5}; echo "${tmpvar%,}"
1,2,3,4,5

Или с "$*", которое соединяется с использованием первого символа IFS. Это уничтожает глобальное состояние, но этого можно легко избежать, запустив его в подоболочке или в функции сlocal IFS:

$ IFS=,; set -- {1..5}; echo "$*";
1,2,3,4,5

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

a=1; b=5
for (( i=a ; i<b ; i++ )); do
    printf "$i,";
done;
printf "$b\n" 
5
27.01.2020, 21:49

Попробуйте использовать:

seq --separator="," 1 5
5
27.01.2020, 21:49

Если вы разрешаете использовать пробелы вместе с запятыми, попробуйте

$ echo {1..5},
1, 2, 3, 4, 5,
2
27.01.2020, 21:49

Теги

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