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

Материал из ALT Linux Wiki
Нет описания правки
Нет описания правки
(не показаны 4 промежуточные версии этого же участника)
Строка 19: Строка 19:
|<pre>${!переменная[@]}</pre>
|<pre>${!переменная[@]}</pre>
|<code>"${<span style="background-color:yellow">!</span>array[@]}"</code>
|<code>"${<span style="background-color:yellow">!</span>array[@]}"</code>
|style="text-align:center"|(some content of our array)
|style="text-align:center"|(<span style="background-color:yellow">some content of our array</span>)
↓<br/>
↓<br/>
0 1 2 3 4
0 1 2 3 4
Строка 26: Строка 26:
|<pre>${#переменная[@]}</pre>
|<pre>${#переменная[@]}</pre>
|<code>"${<span style="background-color:yellow">#</span>array[@]}"</code>
|<code>"${<span style="background-color:yellow">#</span>array[@]}"</code>
|style="text-align:center"|(some content of our array)
|style="text-align:center"|(<span style="background-color:yellow">some content of our array</span>)
↓<br/>
↓<br/>
5
5
Строка 32: Строка 32:
|…числа '''символов''' в переменной
|…числа '''символов''' в переменной
|<pre>${#переменная}</pre>
|<pre>${#переменная}</pre>
|<code>"${<span style="background-color:yellow">#</span>URL}"</code>
|<code>"${<span style="background-color:yellow">#</span>VAR}"</code>
|style="text-align:center"|https://www.altlinux.org/index.php
|style="text-align:center"|https://www.altlinux.org/index.php
↓<br/>
↓<br/>
Строка 45: Строка 45:
${переменная: -конец[:длина]}
${переменная: -конец[:длина]}
</pre>
</pre>
|<code>"${URL:<span style="background-color:yellow"> -22</span>:<span style="background-color:yellow">8</span>}}"</code>
|<code>"${VAR:<span style="background-color:yellow">12</span>:<span style="background-color:yellow">8</span>}"</code></br>
<code>"${VAR:<span style="background-color:yellow"> -22</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">.org/index.php</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.php</span></s>
↓<br/>
↓<br/>
Строка 52: Строка 53:
|…'''кратчайшего''' совпадения с шаблоном '''в начале''' строки
|…'''кратчайшего''' совпадения с шаблоном '''в начале''' строки
|<pre>${переменная#шаблон}</pre>
|<pre>${переменная#шаблон}</pre>
|<code>"${URL#<span style="background-color:yellow">*/</span>}"</code>
|<code>"${VAR#<span style="background-color:yellow">*/</span>}"</code>
|style="text-align:center"|<s><span style="background-color:yellow">https:/</span></s>/www.altlinux.org/index.php
|style="text-align:center"|<s><span style="background-color:yellow">https:/</span></s>/www.altlinux.org/index.php
↓<br/>
↓<br/>
Строка 59: Строка 60:
|…'''длиннейшего''' совпадения с шаблоном '''в начале''' строки
|…'''длиннейшего''' совпадения с шаблоном '''в начале''' строки
|<pre>${переменная##шаблон}</pre>
|<pre>${переменная##шаблон}</pre>
|<code>"${URL##<span style="background-color:yellow">*/</span>}"</code>
|<code>"${VAR##<span style="background-color:yellow">*/</span>}"</code>
|style="text-align:center"|<s><span style="background-color:yellow">https://www.altlinux.org/</span></s>index.php
|style="text-align:center"|<s><span style="background-color:yellow">https://www.altlinux.org/</span></s>index.php
↓<br/>
↓<br/>
Строка 66: Строка 67:
|…'''кратчайшего''' совпадения с шаблоном '''в конце''' строки
|…'''кратчайшего''' совпадения с шаблоном '''в конце''' строки
|<pre>${переменная%шаблон}</pre>
|<pre>${переменная%шаблон}</pre>
|<code>"${URL%<span style="background-color:yellow">/*</span>}"</code>
|<code>"${VAR%<span style="background-color:yellow">/*</span>}"</code>
|style="text-align:center"|https://www.altlinux.org<s><span style="background-color:yellow">/index.php</span></s>
|style="text-align:center"|https://www.altlinux.org<s><span style="background-color:yellow">/index.php</span></s>
↓<br/>
↓<br/>
Строка 73: Строка 74:
|…'''длиннейшего''' совпадения с шаблоном '''в конце''' строки
|…'''длиннейшего''' совпадения с шаблоном '''в конце''' строки
|<pre>${переменная%%шаблон}</pre>
|<pre>${переменная%%шаблон}</pre>
|<code>"${URL%%<span style="background-color:yellow">/*</span>}"</code>
|<code>"${VAR%%<span style="background-color:yellow">/*</span>}"</code>
|style="text-align:center"|https:<s><span style="background-color:yellow">//www.altlinux.org/index.php</span></s>
|style="text-align:center"|https:<s><span style="background-color:yellow">//www.altlinux.org/index.php</span></s>
↓<br/>
↓<br/>
Строка 81: Строка 82:
|…'''первого''' совпадения с шаблоном
|…'''первого''' совпадения с шаблоном
|<pre>${переменная/шаблон/заменитель}</pre>
|<pre>${переменная/шаблон/заменитель}</pre>
|<code>"${URL/<span style="background-color:yellow">.</span>/<span style="background-color:yellow">-</span>}"</code>
|<code>"${VAR/<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.org/index.php
|style="text-align:center"|https://www<span style="background-color:yellow">.</span>altlinux.org/index.php
↓<br/>
↓<br/>
Строка 88: Строка 89:
|…'''каждого''' совпадения с шаблоном
|…'''каждого''' совпадения с шаблоном
|<pre>${переменная//шаблон/заменитель}</pre>
|<pre>${переменная//шаблон/заменитель}</pre>
|<code>"${URL//<span style="background-color:yellow">.</span>/<span style="background-color:yellow">-</span>}"</code>
|<code>"${VAR//<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>org/index<span style="background-color:yellow">.</span>php
|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>php
↓<br/>
↓<br/>
Строка 95: Строка 96:
|…шаблона '''в начале''' строки
|…шаблона '''в начале''' строки
|<pre>${переменная/#шаблон/заменитель}</pre>
|<pre>${переменная/#шаблон/заменитель}</pre>
|<code>"${URL/#<span style="background-color:yellow">*:</span>/<span style="background-color:yellow">ftp:</span>}"</code>
|<code>"${VAR/#<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.org/index.php
|style="text-align:center"|<span style="background-color:yellow">https:</span>//www.altlinux.org/index.php
↓<br/>
↓<br/>
Строка 102: Строка 103:
|…шаблона '''в конце''' строки
|…шаблона '''в конце''' строки
|<pre>${переменная/%шаблон/заменитель}</pre>
|<pre>${переменная/%шаблон/заменитель}</pre>
|<code>"${URL/%<span style="background-color:yellow">.php</span>/<span style="background-color:yellow">.jpg</span>}"</code>
|<code>"${VAR/%<span style="background-color:yellow">.php</span>/<span style="background-color:yellow">.jpg</span>}"</code>
|style="text-align:center"|https://www.altlinux.org/index<span style="background-color:yellow">.php</span>
|style="text-align:center"|https://www.altlinux.org/index<span style="background-color:yellow">.php</span>
↓<br/>
↓<br/>
Строка 111: Строка 112:
*либо для '''всех''' символов (из шаблона или '''вообще''')
*либо для '''всех''' символов (из шаблона или '''вообще''')
|<pre>${переменная[^|,][^^|,,[шаблон]]}</pre>
|<pre>${переменная[^|,][^^|,,[шаблон]]}</pre>
|<code>"${URL^^<span style="background-color:yellow">[ht]</span>}"</code>
|<code>"${VAR^^<span style="background-color:yellow">[ht]</span>}"</code>
|style="text-align:center"|<span style="background-color:yellow">htt</span>ps://www.altlinux.org/index.p<span style="background-color:yellow">h</span>p
|style="text-align:center"|<span style="background-color:yellow">htt</span>ps://www.altlinux.org/index.p<span style="background-color:yellow">h</span>p
↓<br/>
↓<br/>

Версия от 05:33, 14 июля 2022

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

Дабы больше не искать, решил перевести сюда тот самый блок, ради которого всё затевалось, слегка его дополнив.

Манипуляции с переменными
Действие Оператор Пример Результат
(нет) Переменная по умолчанию
${переменная:-умолчание}
"${VAR:-default}" unset VAR


default

Счёт… элементов массива (удобно для цикла for)
${!переменная[@]}
"${!array[@]}" (some content of our array)


0 1 2 3 4

числа элементов в массиве
${#переменная[@]}
"${#array[@]}" (some content of our array)


5

…числа символов в переменной
${#переменная}
"${#VAR}" https://www.altlinux.org/index.php


34

Удаление… всех символов кроме части (не обязательно заданной длины) от символа:
  • <начало> (по умолчанию — 0) или
  • < -конец> (пробел обязателен)
${переменная:[начало][:длина]}
${переменная: -конец[:длина]}
"${VAR:12:8}"

"${VAR: -22:8}"

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


altlinux

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


/www.altlinux.org/index.php

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


index.php

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


https://www.altlinux.org

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


https:

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


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

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


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

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


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

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


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

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


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

Обратная связь