Переменные bash: различия между версиями
Дым (обсуждение | вклад) Нет описания правки |
Дым (обсуждение | вклад) Нет описания правки |
||
(не показаны 4 промежуточные версии этого же участника) | |||
Строка 6: | Строка 6: | ||
|- | |- | ||
!colspan=2|Действие!!Оператор!!Пример!!Результат | !colspan=2|Действие!!Оператор!!Пример!!Результат | ||
|-${! | |-${!VAR[@]} | ||
!style="writing-mode:vertical-lr;transform:rotate(180deg)"|(нет) | !style="writing-mode:vertical-lr;transform:rotate(180deg)"|(нет) | ||
|Переменная '''по умолчанию''' | |Переменная '''по умолчанию''' | ||
Строка 16: | Строка 16: | ||
|- | |- | ||
!rowspan=3 style="writing-mode:vertical-lr;transform:rotate(180deg)"|Счёт… | !rowspan=3 style="writing-mode:vertical-lr;transform:rotate(180deg)"|Счёт… | ||
|…''' | |…'''каждого''' элемента в массиве<br/>(удобно для цикла <code>for</code>) | ||
|<pre>${!переменная[@]}</pre> | |<pre>${!переменная[@]}</pre> | ||
|<code>"${<span style="background-color:yellow">!</span> | |<code>"${<span style="background-color:yellow">!</span>VAR[@]}"</code> | ||
|style="text-align:center"|(<span style="background-color:yellow"> | |style="text-align:center"|(<span style="background-color:yellow">массив из скольки-то элементов</span>) | ||
↓<br/> | ↓<br/> | ||
0 1 2 3 | 0 1 2 3 | ||
|- | |- | ||
|…'''числа''' элементов в массиве | |…'''числа''' элементов в массиве | ||
|<pre>${#переменная[@]}</pre> | |<pre>${#переменная[@]}</pre> | ||
|<code>"${<span style="background-color:yellow">#</span> | |<code>"${<span style="background-color:yellow">#</span>VAR[@]}"</code> | ||
|style="text-align:center"|(<span style="background-color:yellow"> | |style="text-align:center"|(<span style="background-color:yellow">массив из скольки-то элементов</span>) | ||
↓<br/> | ↓<br/> | ||
4 | |||
|- | |- | ||
|…числа '''символов''' в переменной | |…числа '''символов''' в переменной |
Текущая версия от 06:41, 29 ноября 2023
Всякий раз вспоминая, как можно выудить часть bash-переменной без разбиения её вызовом команд, гуглил что-то вроде этой статьи.
Дабы больше не искать, решил перевести сюда тот самый блок, ради которого всё затевалось, слегка его дополнив.
Действие | Оператор | Пример | Результат | |
---|---|---|---|---|
(нет) | Переменная по умолчанию | ${переменная:-умолчание} |
"${VAR:-default}"
|
unset ↓ |
Счёт… | …каждого элемента в массиве (удобно для цикла for )
|
${!переменная[@]} |
"${!VAR[@]}"
|
(массив из скольки-то элементов)
↓ |
…числа элементов в массиве | ${#переменная[@]} |
"${#VAR[@]}"
|
(массив из скольки-то элементов)
↓ | |
…числа символов в переменной | ${#переменная} |
"${#VAR}"
|
https://www.altlinux.org/index.php
↓ | |
Удаление… | …всех символов кроме части (не обязательно заданной длины) от символа:
|
${переменная:[начало][:длина]} ${переменная: -конец[:длина]} |
"${VAR:12:8}"
|
↓ |
…кратчайшего совпадения с шаблоном в начале строки | ${переменная#шаблон} |
"${VAR#*/}"
|
↓ | |
…длиннейшего совпадения с шаблоном в начале строки | ${переменная##шаблон} |
"${VAR##*/}"
|
↓ | |
…кратчайшего совпадения с шаблоном в конце строки | ${переменная%шаблон} |
"${VAR%/*}"
|
https://www.altlinux.org | |
…длиннейшего совпадения с шаблоном в конце строки | ${переменная%%шаблон} |
"${VAR%%/*}"
|
https: ↓ | |
Замена… | …первого совпадения с шаблоном | ${переменная/шаблон/заменитель} |
"${VAR/./-}"
|
https://www.altlinux.org/index.php
↓ |
…каждого совпадения с шаблоном | ${переменная//шаблон/заменитель} |
"${VAR//./-}"
|
https://www.altlinux.org/index.php
↓ | |
…шаблона в начале строки | ${переменная/#шаблон/заменитель} |
"${VAR/#*:/ftp:}"
|
https://www.altlinux.org/index.php
↓ | |
…шаблона в конце строки | ${переменная/%шаблон/заменитель} |
"${VAR/%.php/.jpg}"
|
https://www.altlinux.org/index.php | |
…регистра:
|
${переменная[^|,][^^|,,[шаблон]]} |
"${VAR^^[ht]}"
|
https://www.altlinux.org/index.php
↓ | |
…одной переменной значением из другой | ${!переменная} |
"${!VAR}"
|
MSG=TEXT; TEXT="Some info"; echo "${MSG} = ${!MSG}" ↓ |