5 příkladů skriptů Bash, které vám pomohou naučit se programování v Linuxu

Skriptování Bash je jedním z nejpopulárnějších a přístupných způsobů programování vašeho počítače se systémem Linux. Tyto jednoduché příklady skriptů vám pomohou pochopit proces a seznámí vás se základy programování Bash.

1. Jak tisknout Hello World v Bash

Příklad Hello World je skvělý způsob, jak se naučit jakýkoli programovací jazyk a Bash není výjimkou.

Zde je návod, jak vytisknout „Hello World“ pomocí Bash:

  • Otevřete textový editor a začněte upravovat nový soubor obsahující následující řádky kódu.
  • První řádek vašich Bash skriptů by měl vždy vypadat takto:
     #!/bin/bash 

    Příkaz Shebang (#!/bin/bash) je nezbytný, protože jej shell používá k rozhodnutí, jak skript spustit. V tomto případě používá interpret Bash.

  • Každý řádek začínající znakem # je komentář. Řádek shebang je speciální případ, ale k vysvětlení kódu můžete použít své vlastní komentáře. Přidejte komentář na řádek 2, např.
      
  • Můžete tisknout na standardní výstup pomocí příkazu echo následovaného hodnotou, kterou chcete vytisknout. Na řádek 3 přidejte následující:
     echo "Hello World" 
  • Uložte skript, nejlépe s příponou .sh, např. hello_world.sh. Rozšíření není podmínkou, ale je to konvence, které je užitečné dodržovat.
  • Chcete-li skript spustit, udělejte soubor spustitelným. Použijte příkaz chmod („change mode“) spolu s argumentem +x („executable“) a názvem vašeho shell skriptu:
     chmod +x hello_world.sh 
  • Tento příkaz použijte ke spuštění skriptu z jeho adresáře:
     ./hello_world.sh 
  • Když se skript spustí, vytiskne na váš terminál text „Hello World“:
  •   Jak přejít ze SmartThings Classic na novou aplikaci SmartThings

    2. Vytvořte adresář čtením vstupu

    Z vašich skriptů můžete spouštět jakýkoli program, který byste normálně spouštěli na příkazovém řádku. Můžete například vytvořit nový adresář ze skriptu pomocí příkazu mkdir.

  • Začněte se stejnou linií shebang jako předtím:
     #!/bin/bash 
  • Požádejte uživatele o název adresáře pomocí příkazu echo jako dříve:
     echo "Enter new directory name:" 
  • K načtení uživatelského vstupu použijte vestavěný příkaz read. Jediný argument pojmenovává proměnnou, do které shell uloží vstup:
     read newdir 
  • Pokud potřebujete použít hodnotu uloženou v proměnné, před jejím názvem uveďte symbol dolaru ($). Obsah vstupní proměnné můžete předat jako argument příkazu mkdir a vytvořit nový adresář:
     mkdir $newdir 
  • Když spustíte tento skript, vyzve vás k zadání. Zadejte platný název adresáře a uvidíte, že jej skript vytvoří ve vašem aktuálním adresáři:
  • 3. Vytvořte adresář pomocí argumentů příkazového řádku

    Jako alternativu k interaktivnímu čtení vstupu podporuje většina příkazů Linuxu argumenty. Při spuštění programu můžete zadat argument, abyste řídili jeho chování.

    Ve skriptu můžete použít $1 k odkazování na speciální proměnnou, která obsahuje hodnotu prvního argumentu. $2 bude odkazovat na druhý argument a tak dále.

      Oddělte jakoukoli kartu Chrome do plovoucího panelu
  • Vytvořte adresář pomocí příkazu mkdir z předchozího příkladu. Tentokrát však použijte vestavěnou proměnnou $1:
     #!/bin/bash
    mkdir $1
  • Spusťte skript, tentokrát předejte vámi zvolený název nového adresáře jako argument:
     ./arg_dir.sh Test 
  • Možná se ptáte, co se stane, když skript spustíte bez zadání argumentu. Zkuste to a uvidíte; měli byste obdržet chybovou zprávu, která začíná „usage: mkdir“:

    Bez jakýchkoli argumentů příkazového řádku bude hodnota $1 prázdná. Když váš skript volá mkdir, nepředá mu argument a příkaz mkdir vrátí tuto chybu. Abyste tomu zabránili, můžete sami zkontrolovat stav a prezentovat přívětivější chybu:

  • Jako vždy začněte řádkem shebang:
     #!/bin/bash 
  • Než zavoláte mkdir, zkontrolujte, zda není první argument prázdný (tj. žádné argumenty). Můžete to udělat pomocí příkazu Bash if, který spouští kód na základě podmínky:
     if ["$1" = ""]; then 
  • Pokud je první argument prázdný, vytiskněte chybu a ukončete skript:
         echo "Please provide a new directory name as the first argument"
        exit
  • Trochu zvláštní klíčové slovo „fi“ („if“ obrácené) signalizuje konec příkazu if v Bash:
     fi 
  • Váš skript nyní může pokračovat jako dříve, aby zvládl případ, kdy je přítomen argument:
     mkdir $1 
  • Při spuštění této nové verze skriptu se zobrazí zpráva, pokud zapomenete uvést argument:

    4. Odstraňte soubor pomocí funkce Bash

    Pokud zjistíte, že opakujete stejný kód, zvažte jeho zabalení do funkce. Tuto funkci pak můžete volat, kdykoli budete potřebovat.

      Jak stahovat skladby Spotify bez Premium

    Zde je příklad funkce, která smaže daný soubor.

  • Začněte linií shebang:
     #!/bin/bash 
  • Definujte funkci napsáním jejího názvu následovaného prázdnými závorkami a příkazy do složených závorek:
     del_file() {
        echo "deleting $1"
        rm $1
    }

    Poté můžete funkci zavolat a předat jí název souboru, který chcete odstranit:

     del_file test.txt 

  • Když zavoláte funkci, nastaví speciální $? hodnotu se stavem ukončení posledního spuštěného příkazu. Stav ukončení je užitečný pro kontrolu chyb; v tomto příkladu můžete otestovat, zda byl příkaz rm úspěšný:

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

    5. Vytvořte základní kalkulačku pro aritmetické výpočty

    Tento poslední příklad ukazuje velmi základní kalkulačku. Když jej spustíte, zadáte dvě hodnoty a poté vyberete aritmetickou operaci, která se s nimi provede.

    Zde je kód pro 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"

    Všimněte si použití case … esac, což je Bashův ekvivalent příkazu switch z jiných jazyků. Umožňuje vám otestovat hodnotu – v tomto případě proměnnou volby – proti několika pevným hodnotám a spustit související kód.

    Tento skript používá k provedení každého výpočtu příkaz bc.