BASH: Как я могу объединить две (или более) манипуляции со строками переменных за один шаг?

Возможно ли объединить две или более функции манипуляции со строками переменной в BASH (или любой другой стандартной команде Linux)?

Скажем, например. У меня есть переменная $XDG_CURRENT_DESKTOP, которая содержит строку ubuntu:GNOME.
Теперь я могу получить вторую подстроку с помощью ${XDG_CURRENT_DESKTOP##*:}GNOME.
Я также могу получить строчную строку через ${XDG_CURRENT_DESKTOP,,}ubuntu:gnome.

Но как мне объединить обе функции (→ gnome) в однупростую – команду без использования перенаправления на sed, awk, grep или любая другая из этих — достаточно тяжеловесных — команд и без дополнительного шага сохранения буфера? например:

local mybuffer="${XDG_CURRENT_DESKTOP##*:}"
echo "${mybuffer,,}"

Я хочу избежать такого «индекса» или конструкции вызова функции для достижения этой цели, и я уже пробовал любую комбинацию обоих упомянутых, но это кажется бесполезным.
Есть ли другой способ?
Или мне нужно обновить bash? (используя: GNU bash 4.3.11)
Или это может сделать любая другая оболочка?

6
задан 25 November 2021 в 18:23

0 ответов

Другие вопросы по тегам:

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