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

Материал из ALT Linux Wiki
Нет описания правки
Нет описания правки
Строка 2: Строка 2:
Чтобы в дальнейшем искать не приходилось, решил перевести сюда тот самый блок, ради которого всё затевалось.
Чтобы в дальнейшем искать не приходилось, решил перевести сюда тот самый блок, ради которого всё затевалось.
{|class="wikitable"
{|class="wikitable"
|+<strong>Разберём оперирование переменными на примере строки <code>url='https://guide.bash.academy/variables.html'</code>.</strong>
|+<strong>Манипуляции переменными на примере строки <code>url='https://guide.bash.academy/variables.html'</code>.</strong>
|-
|-
!Оператор!!Действие!!Пример!!Результат
!Действие!!Оператор!!Описание!!Пример!!Результат
|-
|-
!rowspan=4|Удаление
|<code>${переменная#образец}</code>
|<code>${переменная#образец}</code>
|Удаление ''кратчайшего'' куска, совпадающего с образцом '''в начале''' строки.
|Удаление ''кратчайшего'' куска, совпадающего с образцом '''в начале''' строки.
|<code>"${url#*/}"</code>
|<code>"${url#<span style="background-color:yellow">*/</span>}"</code>
|style="text-align:center"|<span style="background-color:yellow">https:/</span>/guide.bash.academy/variables.html
|style="text-align:center"|<s><span style="background-color:yellow">https:/</span></s>/guide.bash.academy/variables.html
↓<br/>
↓<br/>
/guide.bash.academy/variables.html
/guide.bash.academy/variables.html
Строка 15: Строка 16:
|<code>${переменная##образец}</code>
|<code>${переменная##образец}</code>
|Удаление ''длиннейшего'' куска, совпадающего с образцом '''в начале''' строки.
|Удаление ''длиннейшего'' куска, совпадающего с образцом '''в начале''' строки.
|<code>"${url##*/}"</code>
|<code>"${url##<span style="background-color:yellow">*/</span>}"</code>
|style="text-align:center"|<span style="background-color:yellow">https://guide.bash.academy/</span>variables.html
|style="text-align:center"|<s><span style="background-color:yellow">https://guide.bash.academy/</span></s>variables.html
↓<br/>
↓<br/>
variables.html
variables.html
Строка 22: Строка 23:
|<code>${переменная%образец}</code>
|<code>${переменная%образец}</code>
|Удаление ''кратчайшего'' куска, совпадающего с образцом '''в конце''' строки.
|Удаление ''кратчайшего'' куска, совпадающего с образцом '''в конце''' строки.
|<code>"${url%/*}"</code>
|<code>"${url%<span style="background-color:yellow">/*</span>}"</code>
|style="text-align:center"|https://guide.bash.academy<span style="background-color:yellow">/variables.html</span>
|style="text-align:center"|https://guide.bash.academy<s><span style="background-color:yellow">/variables.html</span></s>
↓<br/>
↓<br/>
https://guide.bash.academy
https://guide.bash.academy
Строка 29: Строка 30:
|<code>${переменная%%образец}</code>
|<code>${переменная%%образец}</code>
|Удаление ''длиннейшего'' куска, совпадающего с образцом '''в конце''' строки.
|Удаление ''длиннейшего'' куска, совпадающего с образцом '''в конце''' строки.
|<code>"${url%%/*}"</code>
|<code>"${url%%<span style="background-color:yellow">/*</span>}"</code>
|style="text-align:center"|https:<span style="background-color:yellow">//guide.bash.academy/variables.html</span>
|style="text-align:center"|https:<s><span style="background-color:yellow">//guide.bash.academy/variables.html</span></s>
↓<br/>
↓<br/>
https:
https:
|-
|-
!rowspan=4|Замена
|<code>${переменная/образец/заменитель}</code>
|<code>${переменная/образец/заменитель}</code>
|Замена ''первого'' вхождения, совпадающего с образцом.
|Замена ''первого'' вхождения, совпадающего с образцом.
|<code>"${url/./-}"</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
↓<br/>
↓<br/>
Строка 43: Строка 45:
|<code>${переменная//образец/заменитель}</code>
|<code>${переменная//образец/заменитель}</code>
|Замена ''каждого'' вхождения, совпадающего с образцом.
|Замена ''каждого'' вхождения, совпадающего с образцом.
|<code>"${url//./-}"</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
↓<br/>
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>
|Замена ''первого'' вхождения, совпадающего с образцом.
|<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
↓<br/>
https://guide<span style="background-color:yellow">-</span>bash.academy/variables.html
|-
|<code>${переменная/%образец/заменитель}</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
↓<br/>
↓<br/>

Версия от 06:31, 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/./-}" 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