Переменные bash: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
Нет описания правки
Строка 65: Строка 65:
|-
|-
|<pre>${переменная[^|^^|,|,,][шаблон]}</pre>
|<pre>${переменная[^|^^|,|,,][шаблон]}</pre>
|Замена регистра для первого или всех символов из шаблона<br/>(для замены '''всех''' символов шаблон можно не задавать)
|Замена регистра для первого (<code>^|,</code>) или всех (<code>^^|,,</code>) символов из шаблона<br/>
(для '''вообще всех''' символов шаблон не нужен)
|<code>"${url^^<span style="background-color:yellow">[ht]</span>}"</code>
|<code>"${url^^<span style="background-color:yellow">[ht]</span>}"</code>
|style="text-align:center"|<span style="background-color:yellow">htt</span>ps://guide.bas<span style="background-color:yellow">h</span>.academy/variables.<span style="background-color:yellow">ht</span>ml
|style="text-align:center"|<span style="background-color:yellow">htt</span>ps://guide.bas<span style="background-color:yellow">h</span>.academy/variables.<span style="background-color:yellow">ht</span>ml

Версия от 04:48, 16 марта 2022

Всякий раз вспоминая, как можно выудить часть 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

Символы
${#переменная}
Число символов в переменной "${#url}" https://guide.bash.academy/variables.html


48

${переменная:начало[:длина]}
${переменная: -конец[:длина]}
Вывод части переменной заданной длины от символа №<начало> или (с обратной стороны) №< -конец>

Пробел перед минусом обязателен!

"${url:7}" https://guide.bash.academy/variables.html


/guide.bash.academy/variables.html