Jak používat funkce v Bash

Jak používat funkce v Bashi pomocí tohoto počítačového jazyka založeného na prostředí Unix, kompatibilního s POSIX. Jako jazyk jeho funkce spočívá v interpretaci příkazů Linuxu, což nám umožňuje automatizovat naše opakující se procesy a také vytvářet příkazy z příkazů operačního systému. V tomto článku přezkoumáme jak používat funkce v bash. Doporučuji přečíst si článek jak vytvořte si vlastní skripty pomocí bash.

Ve skriptu, který navrhujeme, používáme k vyhledání souboru jazyk Bash, který zná jeho jméno. K tomu použijeme najít příkaz ale pomocí funkcí dříve definovaných v uvedeném skriptu. Musíte vzít v úvahu zvláštnost nebo omezení Bash, která není k dispozici ve všech jazycích: pro volání funkce musí být definována dříve.

Definujte funkce

Existují dva způsoby, jak definovat funkce: s deklarací funkce nebo bez ní:

function nombre_funcion () 
{
    # codigo
}

nebo tento druhý, který používám, jak uvidíte později.

nombre_funcion ()
{
    # codigo
}

Také Bash také poskytuje metodu pro předávání parametrů a návrat výsledků. které uvidíme v budoucích článcích.

#!/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


Analýza skriptů

Definice

Pro bash každý úspěšně dokončený proces musí mít jako signál kód „0“. Řádky 12 a 13 definují zpracované chybové kódy EXIT_OK pro úspěch y EXIT_BAD pro ukončení při selhání.

V řádcích 15 a 16 jsou proměnným PATTERN a DIRECTORY přiřazeny první ($ 1) a druhý ($ 2) parametry, které se objeví na příkazovém řádku za názvem skriptu, jak uvidíme později, když jej provedeme.

V řádek 18 vytvoříme naši první funkci. Funkce s názvem «autor» zobrazuje autorství scénářů když to nazýváme argumentem „-a“, jak je vidět na if na řádcích 50 ~ 54. Argument "-a" z řádku 23 umožňuje zobrazit sekvenci «dalšího řádku» kódováním «\ n».

Volání noparamů (řádky 28 ~ 37) má na starosti správu událostí, které musí nastat, když je skript volán bez jakýchkoli parametrů. Ukazujeme, řádně uzavřený mezi novými kódy řádků, zprávu označující, že skript musí být proveden se dvěma parametry, poté je zobrazena možnost (řádek 31) použít číst Zobrazí se výzva k stisknutí „S“ nebo „s“ pro případ, že byste chtěli zobrazit nápovědu. V řádku 32 doslovně říkáme: „pokud odpověď (která k nám přijde v proměnné $ ODPOVĚĎ) obsahuje kterýkoli ze znaků, který obsahuje velká nebo malá písmena, pak (řádek 33) zobrazí prázdný řádek (řádek 34) a provede funkci nápovědy (řádky 23 ~ 26).

Funkce nodir (řádky 39 ~ 42) bude provedena, když zjistíme, že adresář, ve kterém se pokouší hledat, neexistuje.

Funkčnost

S tímto již máme definoval všechny potřebné funkce spustit náš program, který ve skutečnosti začíná na řádku 44, zkontrolovat, zda je první z parametrů, které skript obdrží, „-h“, pokud je to pravda, spustit funkci nápovědy a východy označující normální ukončení.

Pokud PATTERN (první parametr popsaný v řádku 15) je „-a“, autor se zobrazí podle stejného mechanismu vysvětleného v předchozím odstavci pro možnost „-h“.

Na lince 56 je řízeno, že jsme neobdrželi méně než dva parametryV tomto případě je provedena funkce noparams, pak v případě řádku 60 to zjistíme pokud existuje adresář, ve kterém chceme provést vyhledávání, pokud existuje, zobrazí se prázdný řádek, najít příkaz s adresou adresáře, ve kterém chceme provést vyhledávání, následovaný vzorem (začátek názvu hledaného souboru) nový prázdný řádek a pomocí opustit $? svěříme výstup našeho skriptu výsledku vytvořenému funkcí find. V případě, že stav existence adresáře je nepravdivá (řádek 67) zavoláme funkci nodir a odcházíme a označujeme neobvyklé ukončení.

Provádění a testování

$ encontrar
$ encontrar -a
$ encontrar -h
$ encontrar index aljflaskjf #directorio no existe
$ encontrar index public_html
$

En následující články o Bashovi uvidíme mechanismy pro používat parametry ve funkcíchUvidíme také, jak na to formulovat návratová data z nich.

Doufám a doufám, že tento příspěvek byl pro vás užitečný.


Komentář, nechte svůj

Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.

  1.   Josea řekl

    Dobrý den,
    velmi zajímavé a velmi jasné.
    Pouze poznámka; na řádku 68 před proměnnou EXIT_BAD chybí $.
    S vašimi články se budu i nadále učit na jistotu.