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

Материал из ALT Linux Wiki
Нет описания правки
Нет описания правки
Строка 2: Строка 2:
Дабы больше не искать, решил перевести сюда тот самый блок, ради которого всё затевалось.
Дабы больше не искать, решил перевести сюда тот самый блок, ради которого всё затевалось.
{|class="wikitable"
{|class="wikitable"
|+<strong>Манипуляции с переменными на примере <code>url='https://www.altlinux.ru/index.html'</code>.</strong>
|+<strong>Манипуляции с переменными на примере <code>url='https://www.altlinux.org/index.html'</code>.</strong>
|-
|-
!colspan=2|Действие!!Оператор!!Пример!!Результат
!colspan=2|Действие!!Оператор!!Пример!!Результат
Строка 10: Строка 10:
|<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://www.altlinux.ru/index.html
|style="text-align:center"|https://www.altlinux.org/index.html
↓<br/>
↓<br/>
34
35
|-
|-
!rowspan=5 style="writing-mode:vertical-lr;transform:rotate(180deg)"|Удаление…
!rowspan=5 style="writing-mode:vertical-lr;transform:rotate(180deg)"|Удаление…
Строка 22: Строка 22:
${переменная: -конец[:длина]}
${переменная: -конец[:длина]}
</pre>
</pre>
|<code>"${url:<span style="background-color:yellow"> -22</span>:<span style="background-color:yellow">8</span>}}"</code>
|<code>"${url:<span style="background-color:yellow"> -23</span>:<span style="background-color:yellow">8</span>}}"</code>
|style="text-align:center"|<s><span style="background-color:yellow">https://www.</span></s>altlinux<s><span style="background-color:yellow">.ru/index.html</span></s>
|style="text-align:center"|<s><span style="background-color:yellow">https://www.</span></s>altlinux<s><span style="background-color:yellow">.org/index.html</span></s>
↓<br/>
↓<br/>
altlinux
altlinux
Строка 30: Строка 30:
|<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>/www.altlinux.ru/index.html
|style="text-align:center"|<s><span style="background-color:yellow">https:/</span></s>/www.altlinux.org/index.html
↓<br/>
↓<br/>
/www.altlinux.ru/index.html
/www.altlinux.org/index.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://www.altlinux.ru/</span></s>index.html
|style="text-align:center"|<s><span style="background-color:yellow">https://www.altlinux.org/</span></s>index.html
↓<br/>
↓<br/>
index.html
index.html
Строка 44: Строка 44:
|<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://www.altlinux.ru<s><span style="background-color:yellow">/index.html</span></s>
|style="text-align:center"|https://www.altlinux.org<s><span style="background-color:yellow">/index.html</span></s>
↓<br/>
↓<br/>
https://www.altlinux.ru
https://www.altlinux.org
|-
|-
|…'''длиннейшего''' совпадения с шаблоном '''в конце''' строки
|…'''длиннейшего''' совпадения с шаблоном '''в конце''' строки
|<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">//www.altlinux.ru/index.html</span></s>
|style="text-align:center"|https:<s><span style="background-color:yellow">//www.altlinux.org/index.html</span></s>
↓<br/>
↓<br/>
https:
https:
Строка 59: Строка 59:
|<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://www<span style="background-color:yellow">.</span>altlinux.ru/index.html
|style="text-align:center"|https://www<span style="background-color:yellow">.</span>altlinux.org/index.html
↓<br/>
↓<br/>
https://www<span style="background-color:yellow">-</span>altlinux.ru/index.html
https://www<span style="background-color:yellow">-</span>altlinux.org/index.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://www<span style="background-color:yellow">.</span>altlinux<span style="background-color:yellow">.</span>ru/index<span style="background-color:yellow">.</span>html
|style="text-align:center"|https://www<span style="background-color:yellow">.</span>altlinux<span style="background-color:yellow">.</span>org/index<span style="background-color:yellow">.</span>html
↓<br/>
↓<br/>
https://www<span style="background-color:yellow">-</span>altlinux<span style="background-color:yellow">-</span>ru/index<span style="background-color:yellow">-</span>html
https://www<span style="background-color:yellow">-</span>altlinux<span style="background-color:yellow">-</span>org/index<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>//www.altlinux.ru/index.html
|style="text-align:center"|<span style="background-color:yellow">https:</span>//www.altlinux.org/index.html
↓<br/>
↓<br/>
<span style="background-color:yellow">ftp:</span>//www.altlinux.ru/index.html
<span style="background-color:yellow">ftp:</span>//www.altlinux.org/index.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://www.altlinux.ru/index<span style="background-color:yellow">.html</span>
|style="text-align:center"|https://www.altlinux.org/index<span style="background-color:yellow">.html</span>
↓<br/>
↓<br/>
https://www.altlinux.ru/index<span style="background-color:yellow">.jpg</span>
https://www.altlinux.org/index<span style="background-color:yellow">.jpg</span>
|-
|-
|…регистра:
|…регистра:
Строка 89: Строка 89:
|<pre>${переменная[^|,][^^|,,[шаблон]]}</pre>
|<pre>${переменная[^|,][^^|,,[шаблон]]}</pre>
|<code>"${url^^<span style="background-color:yellow">[ht]</span>}"</code>
|<code>"${url^^<span style="background-color:yellow">[ht]</span>}"</code>
|style="text-align:center"|<span style="background-color:yellow">htt</span>ps://www.altlinux.ru/index.<span style="background-color:yellow">ht</span>ml
|style="text-align:center"|<span style="background-color:yellow">htt</span>ps://www.altlinux.org/index.<span style="background-color:yellow">ht</span>ml
↓<br/>
↓<br/>
<span style="background-color:yellow">HTT</span>ps://www.altlinux.ru/index.<span style="background-color:yellow">HT</span>ml
<span style="background-color:yellow">HTT</span>ps://www.altlinux.org/index.<span style="background-color:yellow">HT</span>ml
|}
|}
{{Category navigation|title=Системному администратору|category=Admin|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=Системному администратору|category=Admin|sortkey={{SUBPAGENAME}}}}
[[Категория:Admin]]
[[Категория:Admin]]

Версия от 00:39, 19 марта 2022

Всякий раз вспоминая, как можно выудить часть bash-переменной без разбиения её вызовом команд, гуглил что-то вроде этой статьи. Дабы больше не искать, решил перевести сюда тот самый блок, ради которого всё затевалось.

Манипуляции с переменными на примере url='https://www.altlinux.org/index.html'.
Действие Оператор Пример Результат
Счёт… …числа символов в переменной
${#переменная}
"${#url}" https://www.altlinux.org/index.html


35

Удаление… всех символов кроме части (не обязательно заданной длины) от символа:
  • <начало> или
  • < -конец> (пробел обязателен)
${переменная:начало[:длина]}
${переменная: -конец[:длина]}
"${url: -23:8}}" https://www.altlinux.org/index.html


altlinux

кратчайшего совпадения с шаблоном в начале строки
${переменная#шаблон}
"${url#*/}" https://www.altlinux.org/index.html


/www.altlinux.org/index.html

длиннейшего совпадения с шаблоном в начале строки
${переменная##шаблон}
"${url##*/}" https://www.altlinux.org/index.html


index.html

кратчайшего совпадения с шаблоном в конце строки
${переменная%шаблон}
"${url%/*}" https://www.altlinux.org/index.html


https://www.altlinux.org

длиннейшего совпадения с шаблоном в конце строки
${переменная%%шаблон}
"${url%%/*}" https://www.altlinux.org/index.html


https:

Замена… первого совпадения с шаблоном
${переменная/шаблон/заменитель}
"${url/./-}" https://www.altlinux.org/index.html


https://www-altlinux.org/index.html

каждого совпадения с шаблоном
${переменная//шаблон/заменитель}
"${url//./-}" https://www.altlinux.org/index.html


https://www-altlinux-org/index-html

…шаблона в начале строки
${переменная/#шаблон/заменитель}
"${url/#*:/ftp:}" https://www.altlinux.org/index.html


ftp://www.altlinux.org/index.html

…шаблона в конце строки
${переменная/%шаблон/заменитель}
"${url/%.html/.jpg}" https://www.altlinux.org/index.html


https://www.altlinux.org/index.jpg

…регистра:
  • только для первого символа
  • либо для всех символов (из шаблона или вообще)
${переменная[^|,][^^|,,[шаблон]]}
"${url^^[ht]}" https://www.altlinux.org/index.html


HTTps://www.altlinux.org/index.HTml