Переменные bash: различия между версиями
Дым (обсуждение | вклад) Нет описания правки |
Дым (обсуждение | вклад) Нет описания правки |
||
Строка 4: | Строка 4: | ||
|+<strong>Манипуляции переменными на примере <code>url='https://guide.bash.academy/variables.html'</code>.</strong> | |+<strong>Манипуляции переменными на примере <code>url='https://guide.bash.academy/variables.html'</code>.</strong> | ||
|- | |- | ||
! !! | ! !!Описание!!Оператор!!Пример!!Результат | ||
|- | |- | ||
!style="writing-mode:vertical-lr;transform:rotate(180deg)"|Длина | !style="writing-mode:vertical-lr;transform:rotate(180deg)"|Длина | ||
|Число символов в переменной | |||
|<pre>${#переменная}</pre> | |<pre>${#переменная}</pre> | ||
|<code>"${<span style="background-color:yellow">#</span>url}"</code> | |<code>"${<span style="background-color:yellow">#</span>url}"</code> | ||
|style="text-align:center"|https://guide.bash.academy/variables.html | |style="text-align:center"|https://guide.bash.academy/variables.html | ||
Строка 14: | Строка 14: | ||
41 | 41 | ||
|- | |- | ||
!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"> -33</span>:<span style="background-color:yellow">5</span>}}"</code> | |<code>"${url:<span style="background-color:yellow"> -33</span>:<span style="background-color:yellow">5</span>}}"</code> | ||
|style="text-align:center"|<s><span style="background-color:yellow">https://</span></s>guide<s><span style="background-color:yellow">.bash.academy/variables.html</span></s> | |style="text-align:center"|<s><span style="background-color:yellow">https://</span></s>guide<s><span style="background-color:yellow">.bash.academy/variables.html</span></s> | ||
Строка 27: | Строка 27: | ||
guide | guide | ||
|- | |- | ||
|…'''кратчайшего''' совпадения с шаблоном '''в начале''' строки | |||
|<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 | ||
Строка 34: | Строка 34: | ||
/guide.bash.academy/variables.html | /guide.bash.academy/variables.html | ||
|- | |- | ||
|…'''длиннейшего''' совпадения с шаблоном '''в начале''' строки | |||
|<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 | ||
Строка 41: | Строка 41: | ||
variables.html | variables.html | ||
|- | |- | ||
|…'''кратчайшего''' совпадения с шаблоном '''в конце''' строки | |||
|<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> | ||
Строка 48: | Строка 48: | ||
https://guide.bash.academy | https://guide.bash.academy | ||
|- | |- | ||
|…'''длиннейшего''' совпадения с шаблоном '''в конце''' строки | |||
|<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> | ||
Строка 55: | Строка 55: | ||
https: | https: | ||
|- | |- | ||
!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 | ||
Строка 63: | Строка 63: | ||
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> | |<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 | ||
Строка 70: | Строка 70: | ||
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> | |<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 | ||
Строка 77: | Строка 77: | ||
<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> | |<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> | ||
Строка 84: | Строка 84: | ||
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> | |<pre>${переменная[^|,][^^|,,[шаблон]]}</pre> | ||
*только для '''первого''' символа | *только для '''первого''' символа | ||
*либо для '''всех''' символов (из шаблона или '''вообще''') | *либо для '''всех''' символов (из шаблона или '''вообще''') |
Версия от 00:17, 19 марта 2022
Всякий раз вспоминая, как можно выудить часть bash-переменной без разбиения её вызовом команд, гуглил что-то вроде этой статьи. Дабы больше не искать, решил перевести сюда тот самый блок, ради которого всё затевалось.
Описание | Оператор | Пример | Результат | |
---|---|---|---|---|
Длина | Число символов в переменной | ${#переменная} |
"${#url}"
|
https://guide.bash.academy/variables.html
↓ |
Удаление… | …всех символов кроме части заданной длины от символа:
|
${переменная:начало[:длина]} ${переменная: -конец[:длина]} |
"${url: -33:5}}"
|
↓ |
…кратчайшего совпадения с шаблоном в начале строки | ${переменная#шаблон} |
"${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
↓ |