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

Материал из ALT Linux Wiki
Нет описания правки
Нет описания правки
Строка 7: Строка 7:
|-
|-
!rowspan=4|Удаление
!rowspan=4|Удаление
|<code>${переменная#образец}</code>
|<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
Строка 14: Строка 14:
/guide.bash.academy/variables.html
/guide.bash.academy/variables.html
|-
|-
|<code>${переменная##образец}</code>
|<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
Строка 21: Строка 21:
variables.html
variables.html
|-
|-
|<code>${переменная%образец}</code>
|<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>
Строка 28: Строка 28:
https://guide.bash.academy
https://guide.bash.academy
|-
|-
|<code>${переменная%%образец}</code>
|<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>
Строка 35: Строка 35:
https:
https:
|-
|-
!rowspan=4|Замена
!rowspan=5|Замена
|<code>${переменная/образец/заменитель}</code>
|<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
Строка 43: Строка 43:
https://guide<span style="background-color:yellow">-</span>bash.academy/variables.html
https://guide<span style="background-color:yellow">-</span>bash.academy/variables.html
|-
|-
|<code>${переменная//образец/заменитель}</code>
|<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
Строка 50: Строка 50:
https://guide<span style="background-color:yellow">-</span>bash<span style="background-color:yellow">-</span>academy/variables<span style="background-color:yellow">-</span>html
https://guide<span style="background-color:yellow">-</span>bash<span style="background-color:yellow">-</span>academy/variables<span style="background-color:yellow">-</span>html
|-
|-
|<code>${переменная/#образец/заменитель}</code>
|<pre>${переменная/#шаблон/заменитель}</pre>
|Замена образца ''в начале'' строки.
|Замена шаблона '''в начале''' строки.
|<code>"${url/#<span style="background-color:yellow">*:</span>/<span style="background-color:yellow">ftp:</span>}"</code>
|<code>"${url/#<span style="background-color:yellow">*:</span>/<span style="background-color:yellow">ftp:</span>}"</code>
|style="text-align:center"|<span style="background-color:yellow">https:</span>//guide.bash.academy/variables.html
|style="text-align:center"|<span style="background-color:yellow">https:</span>//guide.bash.academy/variables.html
Строка 57: Строка 57:
<span style="background-color:yellow">ftp:</span>//guide.bash.academy/variables.html
<span style="background-color:yellow">ftp:</span>//guide.bash.academy/variables.html
|-
|-
|<code>${переменная/%образец/заменитель}</code>
|<pre>${переменная/%шаблон/заменитель}</pre>
|Замена образца ''в конце'' строки.
|Замена шаблона '''в конце''' строки.
|<code>"${url/%<span style="background-color:yellow">.html</span>/<span style="background-color:yellow">.jpg</span>}"</code>
|<code>"${url/%<span style="background-color:yellow">.html</span>/<span style="background-color:yellow">.jpg</span>}"</code>
|style="text-align:center"|https://guide.bash.academy/variables<span style="background-color:yellow">.html</span>
|style="text-align:center"|https://guide.bash.academy/variables<span style="background-color:yellow">.html</span>
↓<br/>
↓<br/>
https://guide.bash.academy/variables<span style="background-color:yellow">.jpg</span>
https://guide.bash.academy/variables<span style="background-color:yellow">.jpg</span>
|-
|<pre>${переменная[^|^^|,|,,][шаблон]}</pre>
|Замена регистра для первого или всех символов из шаблона (для замены '''всех''' символов шаблон можно не задавать).
|<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
↓<br/>
<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
|}
|}
{{Category navigation|title=Системному администратору|category=Admin|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=Системному администратору|category=Admin|sortkey={{SUBPAGENAME}}}}
[[Категория:Admin]]
[[Категория:Admin]]

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