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“ на вашия терминал:
  •   Как да използвате командата fd в Linux

    2. Създайте директория чрез четене на въведени данни

    От вашите скриптове можете да стартирате всяка програма, която обикновено изпълнявате от командния ред. Например, можете да създадете нова директория от вашия скрипт, като използвате командата mkdir.

  • Започнете със същата линия като преди:
     #!/bin/bash 
  • Подканете потребителя за име на директория, като използвате командата echo както преди:
     echo "Enter new directory name:" 
  • Използвайте вградената команда за четене, за да извлечете въведеното от потребителя. Единичният аргумент назовава променлива, в която обвивката ще съхранява входа:
     read newdir 
  • Когато трябва да използвате стойността, съхранена в променлива, добавете пред името й символ за долар ($). Можете да предадете съдържанието на входната променлива като аргумент на командата mkdir, за да създадете нова директория:
     mkdir $newdir 
  • Когато стартирате този скрипт, той ще ви подкани за въвеждане. Въведете валидно име на директория и ще видите, че скриптът я създава в текущата ви директория:
  • 3. Създайте директория с помощта на аргументи от командния ред

    Като алтернатива на интерактивното четене на въвеждане, повечето Linux команди поддържат аргументи. Можете да предоставите аргумент, когато стартирате програма, за да контролирате нейното поведение.

    Във вашия скрипт можете да използвате $1 за препратка към специална променлива, която съдържа стойността на първия аргумент. $2 ще препраща към втория аргумент и т.н.

      Как да проверите сигурността на компютър с Linux с Lynis
  • Създайте директория с помощта на командата mkdir от предишния пример. Този път обаче използвайте вградената променлива $1:
     #!/bin/bash
    mkdir $1
  • Стартирайте скрипта, като този път подадете избраното от вас име на нова директория като аргумент:
     ./arg_dir.sh Test 
  • Може би се чудите какво ще се случи, ако стартирате скрипта, без изобщо да предоставите аргумент. Опитайте и вижте; трябва да получите съобщение за грешка, което започва „usage: mkdir“:

    Без никакви аргументи на командния ред стойността на $1 ще бъде празна. Когато вашият скрипт извика mkdir, той няма да му подаде аргумент и командата mkdir ще върне тази грешка. За да избегнете това, можете сами да проверите за условието и да представите по-приятелска грешка:

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

    4. Изтрийте файл с помощта на функция Bash

    Ако откриете, че повтаряте един и същ код, помислете дали да не го опаковате във функция. След това можете да извикате тази функция, когато имате нужда.

      Как да персонализирате темите на Numix на Linux с OOMOX

    Ето пример за функция, която изтрива даден файл.

  • Започнете с линията 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 за извършване на всяко изчисление.