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 = $?";
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!
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.
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`
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.
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
Děkuji! Objetí!
Pablo
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