Переменные bash: различия между версиями
Дым (обсуждение | вклад) Нет описания правки |
Дым (обсуждение | вклад) Нет описания правки |
||
Строка 2: | Строка 2: | ||
Чтобы в дальнейшем искать не приходилось, решил перевести сюда тот самый блок, ради которого всё затевалось. | Чтобы в дальнейшем искать не приходилось, решил перевести сюда тот самый блок, ради которого всё затевалось. | ||
{|class="wikitable" | {|class="wikitable" | ||
|+<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#*/}"
|
↓ |
${переменная##образец}
|
Удаление длиннейшего куска, совпадающего с образцом в начале строки. | "${url##*/}"
|
↓ | |
${переменная%образец}
|
Удаление кратчайшего куска, совпадающего с образцом в конце строки. | "${url%/*}"
|
https://guide.bash.academy | |
${переменная%%образец}
|
Удаление длиннейшего куска, совпадающего с образцом в конце строки. | "${url%%/*}"
|
https: ↓ | |
Замена | ${переменная/образец/заменитель}
|
Замена первого вхождения, совпадающего с образцом. | "${url/./-}"
|
https://guide.bash.academy/variables.html
↓ |
${переменная//образец/заменитель}
|
Замена каждого вхождения, совпадающего с образцом. | "${url//./-}"
|
https://guide.bash.academy/variables.html
↓ | |
${переменная/#образец/заменитель}
|
Замена первого вхождения, совпадающего с образцом. | "${url/./-}"
|
https://guide.bash.academy/variables.html
↓ | |
${переменная/%образец/заменитель}
|
Замена каждого вхождения, совпадающего с образцом. | "${url//./-}"
|
https://guide.bash.academy/variables.html
↓ |