Я хотел бы применить parameter expansion (например, поиск и замена), чтобы удалить пробелы из brace expansion ({a..z}
). Возможно?Как применить расширение параметра при расширении скобки (диапазон)?
Итак, у меня есть следующий диапазон: {a..z}
, который состоит из всех букв, и я хотел бы удалить пробелы за один раз.
Вот уже пример:
$ echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z
$ az=$(eval echo {a..z})
$ echo $az
a b c d e f g h i j k l m n o p q r s t u v w x y z
$ echo ${az// /}
abcdefghijklmnopqrstuvwxyz
Можно ли применить разложение параметра непосредственно на диапазоне? Или, по крайней мере, сделать это в одном выражении, особенно, не присваивая это переменной?
Одним из примеров использования является определение всех параметров динамически для getopts
, например:
while getopts {a..z} arg; do
printf $arg
done
однако это не работает (например ./az.sh -a -b -c
) в качестве пространств от этого диапазона должен быть удален первым.
Session-глобальная модификация 'IFS' для локального эффекта. –
Также перезаписывайте текущие позиционные параметры, не сохраняя их. – chepner
'(declare -a f = ({a..z}); IFS =; echo" $ {f [*]} ")'. Но решение printf лучше. – rici