Переменные 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;!!Оператор!!Описание!!Пример!!Результат
!&nbsp;!!Описание!!Оператор!!Пример!!Результат
|-
|-
!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}" https://guide.bash.academy/variables.html


41

Удаление… всех символов кроме части заданной длины от символа:
  • <начало> или
  • < -конец> (пробел обязателен)
${переменная:начало[:длина]}
${переменная: -конец[:длина]}
"${url: -33:5}}" https://guide.bash.academy/variables.html


guide

кратчайшего совпадения с шаблоном в начале строки
${переменная#шаблон}
"${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