Як користуватися функціями в Bash за допомогою цієї оболонки Unix, сумісної з POSIX, комп'ютерною мовою. Як мова, його функція складається з інтерпретації команд Linux, що дозволяє нам автоматизувати наші повторювані процеси, а також створювати команди з команд операційної системи. У цій статті ми розглянемо як використовувати функції в bash - -. Рекомендую прочитати статтю як створювати власні сценарії за допомогою bash.
У запропонованому нами сценарії ми використовуємо мову Bash для пошуку файлу, знаючи його назву. Для цього ми будемо використовувати знайти команду але за допомогою функцій, визначених раніше у вказаному сценарії. Ви повинні взяти до уваги особливість або обмеження Bash, яке є не у всіх мовах: для виклику функції вона повинна бути визначена раніше.
Визначте функції
Існує два способи визначення функцій: із або без оголошення функції:
function nombre_funcion ()
{
# codigo
}
або цей інший, який я використовую, як ви побачите пізніше.
nombre_funcion ()
{
# codigo
}
Також Bash також надає метод передачі параметрів і повернення результатів. що ми побачимо у майбутніх статтях.
#!/usr/bin/env bash
# ~/.bin/encontrar
# encuentra archivos a partir de la descripción de su nombre en un directorio específico
#
# Por Pedro Ruiz Hidalgo
# version 1.0.0
# Copyright © enero 2017
#
#
EXIT_OK=0
EXIT_BAD=66
PATRON=$1
DIRECTORIO=$2
autor ()
{
echo -e "\nPedro Ruiz Hidalgo @petrorum. Copyright © 2017\n"
}
ayuda ()
{
echo -e "\nencontrar [PATRON] [DIRECTORIO]\n"
}
noparams ()
{
echo -e "\nSon necesarios dos parámetros\nencontrar -h para ayuda\n"
read -p "¿Quieres ver la ayuda? (S|s)" -n 1 -r
if [[ $REPLY =~ ^[Ss]$ ]];
then
echo ""
ayuda
fi
}
nodir ()
{
echo -e "\nDirectorio no Existe\n"
}
if [[ $PATRON == "-h" ]];
then
ayuda
exit $EXIT_OK
fi
if [[ $PATRON == "-a" ]];
then
autor
exit $EXIT_OK
fi
if [ $# -lt 2 ];
then
noparams
else
if [ -d $DIRECTORIO ];
then
echo ""
find $DIRECTORIO -name $PATRON*
echo ""
exit $?
else
nodir
exit EXIT_BAD
fi
fi
Аналіз сценарію
Визначення
За баш кожен успішно завершений процес повинен мати в якості сигналу код "0". Рядки 12 і 13 визначають оброблені коди помилок EXIT_OK для успіху y EXIT_BAD для виходу при відмові.
У рядках 15 і 16 змінним PATTERN і DIRECTORY присвоюються перший ($ 1) і другий ($ 2) параметри, які з'являються в командному рядку після імені сценарію, як ми побачимо пізніше, коли ми його виконаємо.
В рядок 18 ми створюємо свою першу функцію. Функція під назвою «автор» відображає авторство сценарію коли ми називаємо це аргументом "-a", як ви можете бачити в if на рядках 50 ~ 54. Аргумент "-і" з рядка 23 дозволяє показати послідовність «наступного рядка» шляхом кодування «\ n».
Виклик noparams (рядки 28 ~ 37) відповідає за управління подіями, які повинні відбутися, коли скрипт викликається без будь-яких параметрів. Ми показуємо, правильно укладене між новими кодами рядків, повідомлення про те, що скрипт повинен виконуватися з двома параметрами, тоді показано варіант (рядок 31) для використання зчитування Вам буде запропоновано натиснути "S" або "s", якщо ви хочете показати допомогу. У рядку 32 ми буквально говоримо: "якщо відповідь (яка приходить до нас у змінну $ ВІДПОВІДЬ) містить будь-який із символів, що використовуються у верхньому чи нижньому регістрі ', потім (рядок 33) показує порожній рядок (рядок 34) і виконує функцію довідки (рядки 23 ~ 26).
Функція nodir (рядки 39 ~ 42) буде виконана, коли ми виявимо, що каталог, де здійснюється спроба пошуку, не існує.
Функціональність
З цим ми вже маємо визначено всі необхідні функції для запуску нашої програми, яка фактично починається з рядка 44, перевіряючи, чи першим із параметрів, які отримує скрипт, є "-h", якщо це так, виконайте функцію довідки виходи, що вказує на нормальне закінчення.
Якщо PATTERN (перший параметр, як описано в рядку 15), має значення "-a", автор відображається за тим самим механізмом, що описаний у попередньому абзаці для параметра "-h".
На лінії 56 контролюється, що ми не отримали менше двох параметрівУ цьому випадку виконується функція noparams, тоді в if рядка 60 ми це з’ясовуємо якщо каталог, в якому ми хочемо здійснити пошук, існує, якщо він існує, відображається порожній рядок, знайти команду з адресою каталогу, в якому ми хочемо здійснити пошук, за яким слід шаблон (початок імені файлу, який ми шукаємо), новий порожній рядок і за допомогою вихід $? ми довіряємо результат нашого сценарію результату, отриманому find. У випадку, якщо стан існування каталогу невірно (рядок 67) ми робимо виклик функції nodir і ми виходимо, вказуючи на ненормальне закінчення.
Виконання та тестування
$ encontrar $ encontrar -a $ encontrar -h $ encontrar index aljflaskjf #directorio no existe $ encontrar index public_html $
En наступні статті про Баша ми побачимо механізми для використання параметрів у функціяхМи також побачимо, як це зробити сформулювати дані про повернення з них.
Сподіваюсь і сподіваюся, що ця публікація була для вас корисною.