Найти тему

И ни какого tr: все ЗАГЛАВНЫЕ или все строчные на чистом Bash

Photo by Katie Rainbow 🏳️‍🌈 from Pexels: https://www.pexels.com/photo/art-creative-sign-abstract-8634711/
Photo by Katie Rainbow 🏳️‍🌈 from Pexels: https://www.pexels.com/photo/art-creative-sign-abstract-8634711/

Когда нам надо перевести значение какой-нибудь переменной в bash в, например, ВЕРХНИЙ РЕГИСТР, мы можем использовать tr:

foo="foo"
foo=$(echo ${foo} | tr a-z A-Z)

или использовать awk:

foo=$(echo ${foo} | awk '{print toupper($0)}')

или perl:

foo=$(echo ${foo} | perl -ne 'print uc')

или sed:

foo=$(echo ${foo} | sed 's/[a-z]/\U&/g')

А знаете ли вы, что подобные манипуляции с текстом (и даже больше) можно совершать используя только bash? И сделать это очень просто!

Давайте для начала создадим переменную и присвоим ей значение:

foo="foo"

А теперь давайте сделаем самую первую букву (f) — заглавной (F):

foo=${foo^}
echo $foo
Foo

Круто! А теперь давайте сделаем первую букву обратно строчной:

foo=${foo,}
echo $foo
foo

Великолепно! А теперь сделаем все буквы заглавными:

foo=${foo^^}
echo $foo
FOO

Потрясающе! А теперь снова вернём всё, как было — в нижний регистр:

foo=${foo,,}
echo $foo
foo

Готово! Надеюсь, что вы научились чему-то новому! Удачи в скриптах!

#bash #shell #bash script #shell script #скрипты #linux #linux terminal #программирование #программирование на bash