5 прикладів сценаріїв Bash, які допоможуть вам навчитися програмуванню в Linux

Сценарії Bash є одним із найпопулярніших і доступних способів програмування комп’ютера Linux. Ці прості приклади сценаріїв допоможуть вам зрозуміти процес і ознайомлять вас з основами програмування Bash.

1. Як надрукувати Hello World у Bash

Приклад Hello World — чудовий спосіб дізнатися про будь-яку мову програмування, і Bash не є винятком.

Ось як надрукувати «Hello World» за допомогою Bash:

  • Відкрийте текстовий редактор і почніть редагувати новий файл, що містить наступні рядки коду.
  • Перший рядок ваших сценаріїв Bash завжди має виглядати так:
     #!/bin/bash 

    Команда Shebang (#!/bin/bash) є важливою, оскільки оболонка використовує її, щоб вирішити, як запустити сценарій. У цьому випадку він використовує інтерпретатор Bash.

  • Будь-який рядок, що починається з символу #, є коментарем. Рядок shebang є особливим випадком, але ви можете використовувати власні коментарі, щоб пояснити свій код. Додайте коментар у рядку 2, наприклад:
      
  • Ви можете надрукувати стандартний вихід за допомогою команди echo, а потім значення, яке ви хочете надрукувати. Додайте наступне в рядку 3:
     echo "Hello World" 
  • Збережіть сценарій, бажано з розширенням .sh, наприклад, hello_world.sh. Розширення не є вимогою, але це умова, якої корисно дотримуватися.
  • Щоб запустити свій сценарій, зробіть файл виконуваним. Використовуйте команду chmod («змінити режим») разом з аргументом +x («виконуваний файл») і назвою сценарію оболонки:
     chmod +x hello_world.sh 
  • Використовуйте цю команду, щоб запустити сценарій із його каталогу:
     ./hello_world.sh 
  • Під час запуску сценарію він надрукує текст «Hello World» на вашому терміналі:
  • 2. Створіть каталог, прочитавши введені дані

    З ваших сценаріїв ви можете запускати будь-яку програму, яку зазвичай запускаєте в командному рядку. Наприклад, ви можете створити новий каталог зі свого сценарію за допомогою команди mkdir.

  • Почніть з того самого рядка, що й раніше:
     #!/bin/bash 
  • Попросіть користувача ввести назву каталогу, використовуючи команду echo, як і раніше:
     echo "Enter new directory name:" 
  • Використовуйте вбудовану команду читання, щоб отримати дані користувача. Єдиний аргумент називає змінну, у якій оболонка зберігатиме вхідні дані:
     read newdir 
  • Якщо вам потрібно використати значення, що зберігається у змінній, поставте перед її ім’ям символ долара ($). Ви можете передати вміст вхідної змінної як аргумент команді mkdir, щоб створити новий каталог:
     mkdir $newdir 
  • Коли ви запускаєте цей сценарій, він запропонує вам ввести дані. Введіть дійсну назву каталогу, і ви побачите, що сценарій створює його у вашому поточному каталозі:
  • 3. Створіть каталог за допомогою аргументів командного рядка

    Як альтернатива інтерактивному читанню введених даних більшість команд Linux підтримують аргументи. Ви можете надати аргумент під час запуску програми, щоб контролювати її поведінку.

    У вашому сценарії ви можете використовувати $1 для посилання на спеціальну змінну, яка містить значення першого аргументу. $2 посилатиметься на другий аргумент і так далі.

  • Створіть каталог за допомогою команди mkdir із попереднього прикладу. Однак цього разу використовуйте вбудовану змінну $1:
     #!/bin/bash
    mkdir $1
  • Запустіть сценарій, цього разу передавши вибране ім’я нового каталогу як аргумент:
     ./arg_dir.sh Test 
  • Вам може бути цікаво, що станеться, якщо ви запустите сценарій без надання аргументу взагалі. Спробуйте і побачите; ви повинні отримати повідомлення про помилку, яке починається з «usage: mkdir»:

    Без будь-яких аргументів командного рядка значення $1 буде порожнім. Коли ваш сценарій викликає mkdir, він не передасть йому аргумент, і команда mkdir поверне цю помилку. Щоб уникнути цього, ви можете перевірити умову самостійно та представити більш зрозумілу помилку:

  • Як завжди, почніть з лінії shebang:
     #!/bin/bash 
  • Перш ніж викликати mkdir, перевірте наявність порожнього першого аргументу (тобто відсутність аргументів). Ви можете зробити це за допомогою оператора Bash if, який виконує код на основі умови:
     if ["$1" = ""]; then 
  • Якщо перший аргумент порожній, виведіть помилку та вийдіть із сценарію:
         echo "Please provide a new directory name as the first argument"
        exit
  • Трохи дивне ключове слово «fi» (перевернуте «if») сигналізує про закінчення оператора if у Bash:
     fi 
  • Тепер ваш сценарій може продовжувати роботу, як і раніше, для обробки випадку, коли присутній аргумент:
     mkdir $1 
  • Коли ви запустите цю нову версію сценарію, ви отримаєте повідомлення, якщо забудете включити аргумент:

    4. Видалити файл за допомогою функції Bash

    Якщо ви виявите, що повторюєте той самий код, подумайте про те, щоб загорнути його у функцію. Потім ви можете викликати цю функцію, коли захочете.

    Ось приклад функції, яка видаляє певний файл.

  • Почніть з лінії shebang:
     #!/bin/bash 
  • Визначте функцію, написавши її ім’я, а потім пусті дужки та команди у фігурних дужках:
     del_file() {
        echo "deleting $1"
        rm $1
    }

    Потім ви можете викликати функцію та передати їй ім’я файлу для видалення:

     del_file test.txt 

  • Коли ви викликаєте функцію, вона встановлює спеціальний $? значення зі статусом виходу останньої виконаної команди. Статус виходу корисний для перевірки помилок; у цьому прикладі ви можете перевірити, чи команда rm виконана успішно:

     if [ $? -ne 0 ]; then
        echo "Sorry, could not delete the file"
    fi

    5. Створіть базовий калькулятор для арифметичних обчислень

    Цей останній приклад демонструє дуже простий калькулятор. Коли ви запускаєте його, ви вводите два значення, а потім вибираєте арифметичну дію для виконання над ними.

    Ось код для calc.sh:

     #!/bin/bash


    echo "Enter first number: "
    read a

    echo "Enter second number: "
    read b


    echo "Enter Arithmetic Operation Choice :"
    echo "1. Addition"
    echo "2. Subtraction"
    echo "3. Multiplication"
    echo "4. Division"
    read choice


    case $choice in
      1)
     result=`echo $a + $b | bc`
      ;;

      2)
     result=`echo $a - $b | bc`
     ;;

      3)
     result=`echo $a \* $b | bc`
      ;;

      4)
     result=`echo "scale=2; $a / $b" | bc`
      ;;
    esac

    echo "Result: $result"

    Зверніть увагу на використання case … esac, який є еквівалентом Bash оператору switch з інших мов. Це дає змогу перевірити значення — у цьому випадку змінну вибору — порівняно з кількома фіксованими значеннями та запустити відповідний код.

    Цей сценарій використовує команду bc для виконання кожного обчислення.