Переменные bash: различия между версиями
Дым (обсуждение | вклад) Нет описания правки |
Дым (обсуждение | вклад) Нет описания правки |
||
Строка 7: | Строка 7: | ||
|- | |- | ||
!rowspan=4|Удаление | !rowspan=4|Удаление | ||
|< | |<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 | ||
|- | |- | ||
|< | |<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 | ||
|- | |- | ||
|< | |<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 | ||
|- | |- | ||
|< | |<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= | !rowspan=5|Замена | ||
|< | |<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 | ||
|- | |- | ||
|< | |<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 | ||
|- | |- | ||
|< | |<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 | ||
|- | |- | ||
|< | |<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]] |
Версия от 07:05, 16 марта 2022
Всякий раз вспоминая, как можно выудить часть bash-переменной без разбиения её вызовом команд, гуглил что-то вроде этой статьи. Чтобы в дальнейшем искать не приходилось, решил перевести сюда тот самый блок, ради которого всё затевалось.
Действие | Оператор | Описание | Пример | Результат |
---|---|---|---|---|
Удаление | ${переменная#шаблон} |
Удаление кратчайшего куска, совпадающего с шаблоном в начале строки. | "${url#*/}"
|
↓ |
${переменная##шаблон} |
Удаление длиннейшего куска, совпадающего с шаблоном в начале строки. | "${url##*/}"
|
↓ | |
${переменная%шаблон} |
Удаление кратчайшего куска, совпадающего с шаблоном в конце строки. | "${url%/*}"
|
https://guide.bash.academy | |
${переменная%%шаблон} |
Удаление длиннейшего куска, совпадающего с шаблоном в конце строки. | "${url%%/*}"
|
https: ↓ | |
Замена | ${переменная/шаблон/заменитель} |
Замена первого вхождения, совпадающего с шаблоном. | "${url/./-}"
|
https://guide.bash.academy/variables.html
↓ |
${переменная//шаблон/заменитель} |
Замена каждого вхождения, совпадающего с шаблоном. | "${url//./-}"
|
https://guide.bash.academy/variables.html
↓ | |
${переменная/#шаблон/заменитель} |
Замена шаблона в начале строки. | "${url/#*:/ftp:}"
|
https://guide.bash.academy/variables.html
↓ | |
${переменная/%шаблон/заменитель} |
Замена шаблона в конце строки. | "${url/%.html/.jpg}"
|
https://guide.bash.academy/variables.html | |
${переменная[^|^^|,|,,][шаблон]} |
Замена регистра для первого или всех символов из шаблона (для замены всех символов шаблон можно не задавать). | "${url^^[ht]}"
|
https://guide.bash.academy/variables.html
↓ |