<Попередній | зміст | Наступна>
Перетворення регістра
Останні версії бити мають підтримку перетворення рядків у верхній/нижній регістр. бити
має чотири розширення параметрів і два варіанти декларувати наказ підтримати його.
Тож для чого добре перетворення регістру? Крім очевидної естетичної цінності, він відіграє важливу роль у програмуванні. Розглянемо випадок пошуку бази даних. Уявіть собі, що користувач ввів рядок у поле введення даних, яке ми хочемо знайти в базі даних. Можливо, користувач введе значення всіма великими або малими літерами або їх комбінацією. Ми, звичайно, не хочемо заповнювати нашу базу даних усіма можливими перестановками великих і малих регістрів. Що робити?
Загальноприйнятим підходом до цієї проблеми є нормалізувати введення користувача. Тобто конвертувати
у стандартизовану форму, перш ніж ми спробуємо знайти базу даних. Ми можемо зробити це, перетворивши всі символи введених користувачами в нижній або верхній регістр і переконавшись, що записи бази даних нормалізуються однаково.
Команда декларувати команду можна використовувати для нормалізації рядків у верхній або нижній регістр. Використання декларувати, ми можемо змусити змінну завжди містити потрібний формат, незалежно від того, що їй призначено:
#! / бін / баш
# ul-declare: продемонструвати перетворення регістру за допомогою declare declare -u upper
оголосити -л нижчим
якщо [[ $1 ]]; тоді
upper="$1" lower="$1" echo $upper echo $lower
fi
#! / бін / баш
# ul-declare: продемонструвати перетворення регістру за допомогою declare declare -u upper
оголосити -л нижчим
якщо [[ $1 ]]; тоді
upper="$1" lower="$1" echo $upper echo $lower
fi
У наведеному вище сценарії ми використовуємо декларувати щоб створити дві змінні, верхній та знизити. Ми призначаємо значення першого аргументу командного рядка (позиційний параметр 1) кожній із змінних, а потім відображаємо їх на екрані:
[me@linuxbox ~]$ ul-оголосити aBc
азбука
Азбука
[me@linuxbox ~]$ ul-оголосити aBc
азбука
Азбука
Як бачимо, аргумент командного рядка ("aBc") нормалізовано.
На додаток до декларувати, є чотири розширення параметрів, які виконують перетворення верхнього/нижнього регістру:
Таблиця 34-1: Розширення параметрів перетворення регістру
Формат результату
Формат результату
${параметр,,} Розгорніть значення параметр у всі малі літери.
![]()
${параметр,} Розгорніть значення параметр змінюється лише перше
символ у нижній регістр.
![]()
${параметр^^} Розгорніть значення параметр на всі великі літери.
![]()
![]()
${параметр^} Розгорніть значення параметр змінюється лише перше
символ у верхньому регістрі (велика літера).
![]()
Ось скрипт, який демонструє ці розширення:
#! / бін / баш
# ul-param: демонструє перетворення регістру за допомогою розширення параметра, якщо [[ $1 ]]; тоді
луна ${1,,}
echo ${1,} echo ${1^^} echo ${1^}
fi
#! / бін / баш
# ul-param: демонструє перетворення регістру за допомогою розширення параметра, якщо [[ $1 ]]; тоді
луна ${1,,}
echo ${1,} echo ${1^^} echo ${1^}
fi
Ось сценарій в дії:
[me@linuxbox ~]$ ul-param aBc
abc aBc ABC
ABc
[me@linuxbox ~]$ ul-param aBc
abc aBc ABC
ABc
Знову ми обробляємо перший аргумент командного рядка і виводимо чотири варіанти, які підтримуються розширеннями параметрів. Хоча цей скрипт використовує перший параметр позиції, параметр може бути будь-який рядковий, змінний або рядковий вираз.
документація