Переменные bash: различия между версиями
Дым (обсуждение | вклад) Нет описания правки |
Дым (обсуждение | вклад) Нет описания правки |
||
Строка 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 |
Версия от 07:58, 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
↓ | |
Символы | ${#переменная} |
Число символов в переменной | "${#url}"
|
https://guide.bash.academy/variables.html
↓ |
${переменная:начало[:длина]} ${переменная: -конец[:длина]} |
Вывод части переменной заданной длины от символа №<начало> или (с обратной стороны) №< -конец>
Пробел перед минусом обязателен! |
"${url:7}"
|
↓ |