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

Материал из ALT Linux Wiki
Нет описания правки
Нет описания правки
Строка 8: Строка 8:
!rowspan=4 style="writing-mode:vertical-lr;transform:rotate(180deg)"|Удаление
!rowspan=4 style="writing-mode:vertical-lr;transform:rotate(180deg)"|Удаление
|<pre>${переменная#шаблон}</pre>
|<pre>${переменная#шаблон}</pre>
|Удаление '''кратчайшего''' куска, совпадающего с шаблоном '''в начале''' строки
|Удаление '''кратчайшего''' совпадения с шаблоном '''в начале''' строки
|<code>"${url#<span style="background-color:yellow">*/</span>}"</code>
|<code>"${url#<span style="background-color:yellow">*/</span>}"</code>
|style="text-align:center"|<s><span style="background-color:yellow">https:/</span></s>/guide.bash.academy/variables.html
|style="text-align:center"|<s><span style="background-color:yellow">https:/</span></s>/guide.bash.academy/variables.html
Строка 15: Строка 15:
|-
|-
|<pre>${переменная##шаблон}</pre>
|<pre>${переменная##шаблон}</pre>
|Удаление '''длиннейшего''' куска, совпадающего с шаблоном '''в начале''' строки
|Удаление '''длиннейшего''' совпадения с шаблоном '''в начале''' строки
|<code>"${url##<span style="background-color:yellow">*/</span>}"</code>
|<code>"${url##<span style="background-color:yellow">*/</span>}"</code>
|style="text-align:center"|<s><span style="background-color:yellow">https://guide.bash.academy/</span></s>variables.html
|style="text-align:center"|<s><span style="background-color:yellow">https://guide.bash.academy/</span></s>variables.html
Строка 22: Строка 22:
|-
|-
|<pre>${переменная%шаблон}</pre>
|<pre>${переменная%шаблон}</pre>
|Удаление '''кратчайшего''' куска, совпадающего с шаблоном '''в конце''' строки
|Удаление '''кратчайшего''' совпадения с шаблоном '''в конце''' строки
|<code>"${url%<span style="background-color:yellow">/*</span>}"</code>
|<code>"${url%<span style="background-color:yellow">/*</span>}"</code>
|style="text-align:center"|https://guide.bash.academy<s><span style="background-color:yellow">/variables.html</span></s>
|style="text-align:center"|https://guide.bash.academy<s><span style="background-color:yellow">/variables.html</span></s>
Строка 29: Строка 29:
|-
|-
|<pre>${переменная%%шаблон}</pre>
|<pre>${переменная%%шаблон}</pre>
|Удаление '''длиннейшего''' куска, совпадающего с шаблоном '''в конце''' строки
|Удаление '''длиннейшего''' совпадения с шаблоном '''в конце''' строки
|<code>"${url%%<span style="background-color:yellow">/*</span>}"</code>
|<code>"${url%%<span style="background-color:yellow">/*</span>}"</code>
|style="text-align:center"|https:<s><span style="background-color:yellow">//guide.bash.academy/variables.html</span></s>
|style="text-align:center"|https:<s><span style="background-color:yellow">//guide.bash.academy/variables.html</span></s>
Строка 37: Строка 37:
!rowspan=5 style="writing-mode:vertical-lr;transform:rotate(180deg)"|Замена
!rowspan=5 style="writing-mode:vertical-lr;transform:rotate(180deg)"|Замена
|<pre>${переменная/шаблон/заменитель}</pre>
|<pre>${переменная/шаблон/заменитель}</pre>
|Замена '''первого''' вхождения, совпадающего с шаблоном
|Замена '''первого''' совпадения с шаблоном
|<code>"${url/<span style="background-color:yellow">.</span>/<span style="background-color:yellow">-</span>}"</code>
|<code>"${url/<span style="background-color:yellow">.</span>/<span style="background-color:yellow">-</span>}"</code>
|style="text-align:center"|https://guide<span style="background-color:yellow">.</span>bash.academy/variables.html
|style="text-align:center"|https://guide<span style="background-color:yellow">.</span>bash.academy/variables.html
Строка 44: Строка 44:
|-
|-
|<pre>${переменная//шаблон/заменитель}</pre>
|<pre>${переменная//шаблон/заменитель}</pre>
|Замена '''каждого''' вхождения, совпадающего с шаблоном
|Замена '''каждого''' совпадения с шаблоном
|<code>"${url//<span style="background-color:yellow">.</span>/<span style="background-color:yellow">-</span>}"</code>
|<code>"${url//<span style="background-color:yellow">.</span>/<span style="background-color:yellow">-</span>}"</code>
|style="text-align:center"|https://guide<span style="background-color:yellow">.</span>bash<span style="background-color:yellow">.</span>academy/variables<span style="background-color:yellow">.</span>html
|style="text-align:center"|https://guide<span style="background-color:yellow">.</span>bash<span style="background-color:yellow">.</span>academy/variables<span style="background-color:yellow">.</span>html

Версия от 04:58, 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