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

Материал из ALT Linux Wiki
Нет описания правки
Нет описания правки
Строка 20: Строка 20:
</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>

Версия от 06:36, 16 марта 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