Переменные bash

Материал из ALT Linux Wiki

Всякий раз вспоминая, как можно выудить часть bash-переменной без разбиения её вызовом команд, гуглил что-то вроде этой статьи. Чтобы в дальнейшем искать не приходилось, решил перевести сюда тот самый блок, ради которого всё затевалось.

Манипуляции переменными на примере строки url='https://guide.bash.academy/variables.html'.
Действие Оператор Описание Пример Результат
Удаление
${переменная#шаблон}
Удаление кратчайшего куска, совпадающего с шаблоном в начале строки. "${url#*/}" https://guide.bash.academy/variables.html


/guide.bash.academy/variables.html

${переменная##шаблон}
Удаление длиннейшего куска, совпадающего с шаблоном в начале строки. "${url##*/}" https://guide.bash.academy/variables.html


variables.html

${переменная%шаблон}
Удаление кратчайшего куска, совпадающего с шаблоном в конце строки. "${url%/*}" https://guide.bash.academy/variables.html


https://guide.bash.academy

${переменная%%шаблон}
Удаление длиннейшего куска, совпадающего с шаблоном в конце строки. "${url%%/*}" https://guide.bash.academy/variables.html


https:

Замена
${переменная/шаблон/заменитель}
Замена первого вхождения, совпадающего с шаблоном. "${url/./-}" https://guide.bash.academy/variables.html


https://guide-bash.academy/variables.html

${переменная//шаблон/заменитель}
Замена каждого вхождения, совпадающего с шаблоном. "${url//./-}" https://guide.bash.academy/variables.html


https://guide-bash-academy/variables-html

${переменная/#шаблон/заменитель}
Замена шаблона в начале строки. "${url/#*:/ftp:}" https://guide.bash.academy/variables.html


ftp://guide.bash.academy/variables.html

${переменная/%шаблон/заменитель}
Замена шаблона в конце строки. "${url/%.html/.jpg}" https://guide.bash.academy/variables.html


https://guide.bash.academy/variables.jpg

${переменная[^|^^|,|,,][шаблон]}
Замена регистра для первого или всех символов из шаблона
(для замены всех символов шаблон можно не задавать).
"${url^^[ht]}" https://guide.bash.academy/variables.html


HTTps://guide.basH.academy/variables.HTml