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

Материал из ALT Linux Wiki
Нет описания правки
Нет описания правки
Строка 4: Строка 4:
|+<strong>Манипуляции переменными на примере строки <code>url='https://guide.bash.academy/variables.html'</code>.</strong>
|+<strong>Манипуляции переменными на примере строки <code>url='https://guide.bash.academy/variables.html'</code>.</strong>
|-
|-
!Действие!!Оператор!!Описание!!Пример!!Результат
!&nbsp;!!Оператор!!Описание!!Пример!!Результат
|-
|-
!rowspan=4|Удаление
!rowspan=4 style="writing-mode:vertical-lr;transform:rotate(180deg)"|Удаление
|<pre>${переменная#шаблон}</pre>
|<pre>${переменная#шаблон}</pre>
|Удаление '''кратчайшего''' куска, совпадающего с шаблоном '''в начале''' строки.
|Удаление '''кратчайшего''' куска, совпадающего с шаблоном '''в начале''' строки.
Строка 35: Строка 35:
https:
https:
|-
|-
!rowspan=5|Замена
!rowspan=5 style="writing-mode:vertical-lr;transform:rotate(180deg)"|Замена
|<pre>${переменная/шаблон/заменитель}</pre>
|<pre>${переменная/шаблон/заменитель}</pre>
|Замена '''первого''' вхождения, совпадающего с шаблоном.
|Замена '''первого''' вхождения, совпадающего с шаблоном.
Строка 70: Строка 70:
↓<br/>
↓<br/>
<span style="background-color:yellow">HTT</span>ps://guide.bas<span style="background-color:yellow">H</span>.academy/variables.<span style="background-color:yellow">HT</span>ml
<span style="background-color:yellow">HTT</span>ps://guide.bas<span style="background-color:yellow">H</span>.academy/variables.<span style="background-color:yellow">HT</span>ml
|-
!rowspan=2 style="writing-mode:vertical-lr;transform:rotate(180deg)"|Символы
|<pre>${#переменная}</pre>
|Число символов в переменной.
|<code>"${<span style="background-color:yellow">#</span>url}"</code>
|style="text-align:center"|https://guide.bash.academy/variables.html
↓<br/>
48
|-
|<pre>
${переменная:начало[:длина]}
${переменная: -конец[:длина]}
</pre>
|Вывод части переменной заданной '''длины''' от символа №<начало> или (с обратной стороны) №< -конец>.
Пробел перед минусом обязателен!
|<code>"${url:<span style="background-color:yellow">7</span>}"</code>
|style="text-align:center"|https:/<span style="background-color:yellow">/guide.bash.academy/variables.html</span>
↓<br/>
/guide.bash.academy/variables.html
|}
|}
{{Category navigation|title=Системному администратору|category=Admin|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=Системному администратору|category=Admin|sortkey={{SUBPAGENAME}}}}
[[Категория:Admin]]
[[Категория:Admin]]

Версия от 04:32, 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/#*:/ftp:}" https://guide.bash.academy/variables.html


ftp://guide.bash.academy/variables.html

${переменная/%шаблон/заменитель}
Замена шаблона в конце строки. "${url/%.html/.jpg}" https://guide.bash.academy/variables.html


https://guide.bash.academy/variables.jpg

${переменная[^|^^|,|,,][шаблон]}
Замена регистра для первого или всех символов из шаблона
(для замены всех символов шаблон можно не задавать).
"${url^^[ht]}" https://guide.bash.academy/variables.html


HTTps://guide.basH.academy/variables.HTml

Символы
${#переменная}
Число символов в переменной. "${#url}" https://guide.bash.academy/variables.html


48

${переменная:начало[:длина]}
${переменная: -конец[:длина]}
Вывод части переменной заданной длины от символа №<начало> или (с обратной стороны) №< -конец>.

Пробел перед минусом обязателен!

"${url:7}" https://guide.bash.academy/variables.html


/guide.bash.academy/variables.html