Programování v bash - část 3

na zajistit naše koncepty Naučíme se 2 velmi užitečné nástroje pro programování, které perfektně fungují v Bash. Naučte se vytvářet funciones a definovat potrubí se může zpočátku zdát složité, ale pak uvidíme obrovské nástroj které nám poskytují.

Trubky

Konkrétně, a aniž by bylo třeba příliš mnoho zatáček, je pipeline metoda, která umožňuje směrování výstupu jednoho procesu jako vstup jiného, ​​což umožňuje řadu výhod, jako je zmenšení řádků kódu, vynechání proměnných úložiště pro výsledky a zlepšení účinnost skriptu.

Trubka je obecně označena symbolem | což umožňuje zřetězit výrazy; Ačkoli se používá ve výchozím nastavení, existují i ​​jiné způsoby, jak vytvořit kanály.

Příklad: tisk posledních zpráv jádra

#dmesg vám umožňuje zobrazit nedávné zprávy jádra a načtené ovladače # během spouštění systému; ocas vytiskne poslední části souboru nebo # příkaz

dmesg | ocas

Ačkoli mohou být komplikované, kolik chceme, základní struktura kanálu umožňuje použít výsledek jednoho příkazu jako vstup do dalšího, který může poskytnout vstup nového příkazu, pokud budeme přidávat po sobě jdoucí kanály.

funkce

Funkce jsou sada příkazů, které jsou seskupeny dohromady, takže je lze provést několikrát, aniž byste je museli přepsat. Je to ekvivalentní myšlence, že když se naučíme vařit určitý druh jídla, napíšeme jeho recept na list a pokaždé, když budeme chtít toto jídlo vařit, konzultujeme recept namísto přepsání nového listu se stejným receptem.

Snad nejdůležitější věcí na funkcích je možnost předávání parametrů, dat, která použijí ke zpracování a generování výstupu. Jeho struktura je následující:

funkce název-funkce {

procesů

}

Příklad: funkce, která zobrazuje služby, které fungují na protokolu tcp. Můžeme také vidět, jak použít více trubek.

# Definujeme název funkce, může to být ten, který se nám líbí.

funkce services_tcp {

#cat zřetězí a zobrazí obsah složky / etc / services, což je #, která obsahuje všechny služby s přidruženými porty.

# první grep vezme seznam a odstraní komentáře, - –v invertujeme výsledek

# druhý grep zobrazuje pouze ty, které souvisejí s tcp

kočka / atd. / služby | grep –v "^ #" | grep tcp

}

Když potřebujeme provést tuto funkci, musíme ji nazvat jejím jménem:

tcp_services

V tomto případě to funguje bez parametrů; Pokud ano, musíme je přidat, aby funkce fungovala správně, jinak funkce nebude fungovat správně. Použití návratu umožňuje funkci vrátit hodnotu jako výsledek procesu.

Příklad: funkce se vstupními parametry, která vypočítá součet 2 čísel.

#! / bin / bash
funkční součet ()
{
# s let můžeme provést operaci uvnitř uvozovek
nechť "result = $ 1 + $ 2"

#return umožňuje vrátit celočíselnou hodnotu. Jakmile je vrácení provedeno, bude hodnota uložena uvnitř proměnné $?
vrátit $ výsledek;
}
 
# Je vyvolána funkce součtu a předáme 2 vstupní parametry.

přidat 2 3

# vytiskne hodnotu $? s ozvěnou hodnotící skutečnou hodnotu proměnné v uvozovkách
echo -e "Výsledek = $?";

<< Přejít na předchozí část

Děkuji Juan Carlos Ortiz!


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.   Žádný ukazatel řekl

    Nejsem si jistý, ale příkaz return funkcí se používá pouze k vrácení celého čísla mezi 0 a 255, jako jsou chybové kódy „exit“, obvykle 0, pokud je vše v pořádku, a jiné číslo pro ostatní případy. Ačkoli v tomto příkladu to funguje, nemyslím si, že je dobrým zvykem vrátit výsledek s návratem.
    Tamhle říkám nesmysl, hm! oko! ha!

  2.   johnk řekl

    Pravda mě nechala na pochybách. V každém případě, abychom se vyhnuli problémům s funkcemi, můžeme návrat nahradit echem v případě, že se funkce snaží vrátit nebo vytisknout hodnotu nebo řetězec.

  3.   Abel S. Mount Big řekl

    Je pravda, že k vyřešení tohoto problému můžete použít příkaz bc, ve funkci sum můžete použít: result = `echo $ 1 + $ 2 | bc -ql`

  4.   Luis Miguel řekl

    dobrý,

    Chtěl bych vědět, kam mohu uložit soubory bash tak, aby fungovaly v celém systému a to není adresář bin, ale může být domovem pro zálohování.

    Díky a pozdravem.

  5.   Joaquin řekl

    Velice vám děkuji, začínám skripty a pravdou je, že je to velmi užitečné, sdílíte své znalosti velmi laskavě!
    pozdravy

    1.    pojďme použít linux řekl

      Děkuji! Objetí!
      Pablo

  6.   CRISTHIAN řekl

    Chyba syntaxe: "(" neočekávané
    Při pokusu o spuštění příkladu se zobrazí chyba, zkopíroval jsem to přesně stejně

    Co může být? jsem na ubuntu 14.10