abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

dnes 15:22 | Pozvánky

V sobotu 24. 2. se uskuteční již 5. ročník největší české WordPress konference – WordCamp Praha 2018. Pražský WordCamp bude rozdělen na dva proudy – pro uživatele a pro vývojáře. Je naplánováno 10 přednášek, 6 workshopů, 6 případových studií, Happines Bar a spousty příležitostí pro networking. V neděli se bude dále konat Contributing Day, kde se každý bude moci aktivně zapojit do překladu, či plánování dalších meetupů. Je připraveno 450

… více »
smíťa | Komentářů: 0
dnes 05:55 | Komunita

Linus Torvalds oznámil vydání Linuxu 4.15-rc9. Po vydání stabilní verze Linuxu se přibližně na 2 týdny otevře začleňovací okno. To se uzavře vydáním verze rc1. Po týdnech následují další rc verze. Obvykle týden po vydání verze rc7 nebo rc8 následuje vydání nové stabilní verze Linuxu. Verze rc9 byla naposledy vydána před více než 6 lety, 4. října 2011. Jednalo se o Linux 3.1. Tenkrát následovala ještě verze rc10.

Ladislav Hagara | Komentářů: 12
včera 21:55 | Zajímavý článek

Greg Kroah-Hartman se v příspěvku na svém blogu věnuje aktuálnímu stavu řešení bezpečnostních chyb Meltdown a Spectre v Linuxu. Jak je na tom Váš Linux? Stačí spustit příkaz "grep . /sys/devices/system/cpu/vulnerabilities/*". Pro více informací lze doporučit Spectre & Meltdown Checker.

Ladislav Hagara | Komentářů: 44
19.1. 18:55 | Komunita

NHSbuntu (Joinup, prezentace) měla být z Ubuntu vycházející linuxová distribuce přizpůsobená pro potřeby britské Národní zdravotní služby (NHS). NHS se název nelíbil, nejednalo se o oficiální projekt NHS, a proto bylo NHSbuntu v září loňského roku přejmenováno na NHoS. Vývojáři NHoS tento týden oznámili, že NHS se nelíbí ani název NHoS a už nemají sílu na další přejmenování a pokračování v projektu. Dodávají, že několik jednání s vedením

… více »
Ladislav Hagara | Komentářů: 7
19.1. 18:44 | Pozvánky

Koncem ledna, 29. 1. 2018 od 17 do 20 hodin se v Akademii CZ.NIC uskuteční večer s Turrisem.

Co bude na programu?… více »
Miška | Komentářů: 19
19.1. 18:33 | Pozvánky

Na tri dni sa hlavné mesto Slovenska po tretíkrát zmení na miesto s najväčšou koncentráciou profesionálnych programátorov, systémových administrátorov, učiteľov informatiky aj technologických nadšencov. Hlavným lákadlom bude konferencia PyCon SK 2018, určená záujemcom o Python, jeden z najpopulárnejších programovacích jazykov na svete.

… více »
RicCo386 | Komentářů: 1
19.1. 18:22 | Pozvánky

Letošní ročník konference Prague PostgreSQL Developer Day se koná ve dnech 14. 2. a 15. 2. 2018. Zveřejněn byl program s přednáškami a školeními. Otevřena byla také registrace na konferenci.

TomasVondra | Komentářů: 0
19.1. 11:33 | Komunita

Společnost Canonical stojící za linuxovou distribucí Ubuntu oznámila dostupnost nástroje pro týmovou spolupráci Slack (Wikipedie) ve formátu snap. Instalovat jej lze ze Snapcraftu. Slack pro Linux je dostupný také ve formátu klasických balíčků pro Ubuntu a Fedoru.

Ladislav Hagara | Komentářů: 10
18.1. 17:33 | Nová verze

Po roce vývoje od vydání verze 2.0 a 6 000 změnách byla vydána nová stabilní verze 3.0 softwaru, který vytváří aplikační rozhraní umožňující chod aplikací pro Microsoft Windows také pod GNU/Linuxem, Wine (Wikipedie). Z novinek lze zdůraznit například podporu Direct3D 10 a 11. Podrobnosti v poznámkách k vydání.

Ladislav Hagara | Komentářů: 15
18.1. 13:44 | Zajímavý projekt

V říjnu loňského roku úspěšně skončila kampaň na podporu chytrého telefonu Librem 5, jenž by měl respektovat bezpečnost, svobodu a soukromí uživatelů. Společnost Purism informuje o aktuálním vývoji tohoto telefonu. Místo plánovaného SoC i.MX6 by měl být použit úspornější i.MX8.

Ladislav Hagara | Komentářů: 6
Jak se vás potenciálně dotkne trend odstraňování analogového audio konektoru typu 3,5mm jack z „chytrých telefonů“?
 (7%)
 (1%)
 (1%)
 (1%)
 (77%)
 (13%)
Celkem 1371 hlasů
 Komentářů: 53, poslední 17.1. 16:55
    Rozcestník

    BASH - III

    7. 11. 2003 | Jan Fuchs | Návody | 131510×

    Tentokrát se podíváme na proměnné, napíšeme si náš první skript a vysvětlíme podmínky a cykly.

    Obsah jednotlivých dílů

    1. Úvod, editace příkazové řádky
    2. Základní příkazy, roury a přesměrování
    3. Proměnné, podmínky a cykly
    4. Funkce a příkazy
    5. Dokumenty here, regulární výrazy
    6. Ladění skriptů, odchytávání signálů a příklady

    Proměnné

    Jsou pouze jednoho datového typu - řetězec znaků. Některé z nich mohou být určeny jen pro čtení. Proměnné můžeme rozdělit do tří částí.

    1. Vnitřní proměnné shellu. O jejich inicializaci se stará shell.

      $ echo $USER
      fuky
      $ echo $OSTYPE
      linux-gnu
      $ echo $LANG
      cs_CZ
      $ echo $SHELLOPTS
      braceexpand:hashall:histexpand:monitor:
      history:interactive-comments:emacs
    2. Uživatelské proměnné. Jako výše uvedené proměnné se skládají pouze z alfanumerických znaků.

    3. Proměnné speciálního významu, skládají se ze speciálních znaků. Například:

      • $$ - PID shellu
      • $! - PID posledního procesu, který byl spuštěn na pozadí
      • $? - návratová hodnota posledního dokončeného procesu.

    Proměnnou můžeme exportovat příkazem export do podřízeného shellu a příkazem readonly zajistíme, že bude určena pouze pro čtení (POZOR, toto omezení se nepřenáší do podřízeného shellu). Když chceme získat hodnotu proměnné, napíšeme před ni znak $. Ale když jí např. hodnotu přiřazujeme, nepíšeme před ní znak dolaru. Pro odstranění proměnné použijeme příkaz unset.

    $ jedna="Lokální proměnná"
    $ export DVA="Proměnná exportovaná do podřízeného shellu"
    $ readonly TRI="Proměnná určená pouze pro čtení, ale jen na lokální urovni"
    $ export TRI
    $ export
    declare -x DVA="Proměnná exportovaná do podřízeného shellu"
    declare -rx TRI="Proměnná určená pouze pro čtení, ale jen na lokální urovni"
    $ readonly
    declare -rx TRI="Proměnná určená pouze pro čtení, ale jen na lokální urovni"
    $ echo $jedna
    Lokální proměnná
    $ TRI="Nová hodnota"
    bash: TRI: readonly variable
    $ bash
    $ TRI="Nová hodnota"
    $ echo $jedna

    $ echo $DVA
    Proměnná exportovaná do podřízeného shellu
    $ echo $TRI
    Nová hodnota
    $ unset TRI

    První skript

    Nadešel čas pro napsání a spuštění našeho prvního skriptu. Pak se ještě na chvíli vrátíme k proměnným. Pojmenujeme ho prvni.sh.

    #!/bin/bash

    # Tento skript nepotřebuje žádné komentáře
    echo "Náš první skript byl právě spuštěn a za 3 vteřiny bude ukončen."
    sleep 3
    echo "Konec."

    exit 0

    Prvním řádkem zajistíme, že náš skript bude opravdu interpretován BASHEM. To je jediná výjimka při použití znaku #, řádka začínající tímto znakem je ignorována a slouží k okomentování zdrojového kódu. Každý správný programátor používá ve svých kódech komentáře. Když se k němu po čase vrátí, dříve ho pochopí a také zjednoduší pochopení ostatním. Potřeba naučit se správnému používání komentářů přijde časem sama. Uvidíte, kde jsou zbytečné a kde naopak velice důležité (POZOR, komentáře se píší ihned se zdrojovým kódem - podle mě není dobrý zvyk je psát až po dokončení programu). A nakonec samozřejmě nezapomeneme vrátit návratový kód exit 0.

    Nyní si skript spustíme, ale nejprve musíme přidat právo pro spuštění, protože textový editor toto právo standardně k nově vytvořeným souborům nepřidává.

    $ ls -l
    -rw-r--r--    1 fuky    fuky       114 říj 19 14:43 prvni.sh
    $ chmod +x ./prvni.sh
    $ ls -l
    -rwxr-xr-x    1 fuky    fuky       114 říj 19 14:43 prvni.sh
    $ ./prvni.sh
    Náš první skript byl právě spuštěn a za 3 vteřiny bude ukončen.
    Konec.

    Proměnné - dokončení

    Nyní, když umíme spouštět skripty, tak si ukážeme na skriptu promenne.sh ještě několik zajímavých věcí.

    #!/bin/bash
    
    prvni="Níže uvedený zá"
    echo "${prvni}pis umožní oddělit proměnnou od okolního textu"
    
    # Kdyby byla $druha definována, byla by vrácena její hodnota,
    # jelikož není, bude vrácen "náhradní výraz"
    echo ${druha-"náhradní výraz"}
    echo $druha
    
    # To samé jako předchozí, ale $treti nezůstane nedefinovaná
    echo ${treti="náhradní výraz"}
    echo $treti
    
    ctvrta="Příšerně žluťoučký kůň úpěl ďábelské ódy."
    
    # Vrátí "náhradní výraz" je-li proměnná definována, jinak
    # se nevrací žádná hodnota
    echo ${ctvrta+"náhradní výraz"}
    echo $ctvrta
    
    # Vypíše délku $ctvrta
    echo ${#ctvrta}
    
    # Od konce odstraní nejkraší část $ctvrta, která odpovídá e*
    echo ${ctvrta%e*}
    
    # Od konce odstraní nejdelší část $ctvrta, která odpovídá e*
    echo ${ctvrta%%e*}
    
    # Od začátku odstraní nejkraší část $ctvrta, která odpovídá *e
    echo ${ctvrta#*e}
    
    # Od začátku odstraní nejdelší část $ctvrta, která odpovídá e*
    echo ${ctvrta##*e}
    
    exit 0

    Ještě si skript spustíme pro lepší pochopení.

    # ./promene.sh
    Níže uvedený zápis umožní oddělit proměnnou od okolního textu
    náhradní výraz

    náhradní výraz
    náhradní výraz
    náhradní výraz
    Příšerně žluťoučký kůň úpěl ďábelské ódy.
    41
    Příšerně žluťoučký kůň úpěl ďáb
    Příš
    rně žluťoučký kůň úpěl ďábelské ódy.
    lské ódy.

    V shellu si ještě vyzkoušíme několik příkazů, abychom pochopili, jak je to s uvozovkami, apostrofy a expanzí.

    $ echo $promenna
    ./promenne.sh ./prvni.sh
    $ echo '$promenna'
    $promenna
    $ echo "${promenna}vni.sh"
    ./*vni.sh
    $ echo ${promenna}vni.sh
    ./prvni.sh
    $ echo ${promenna}vni.pdf
    ./*vni.pdf
    $ echo "$(echo $promenna) - výpis adresáře"
    ./promenne.sh ./prvni.sh - výpis adresáře

    Podmínky

    Skript if.sh nám ukáže použití konstrukce

    if výraz; then příkazy elif výraz; then příkazy else příkazy fi

    #!/bin/bash
    
    if [ "$USER" == "root" ]; then
      echo "Ahoj admine";
    fi
    
    if [ "$USER" == "root" ]; then
      echo "Ahoj admine";
    else
      echo "Ahoj uživateli";
    fi
    
    if [ "$USER" == "root" ]; then
      echo "Ahoj admine";
    elif [ "$USER" == "fuky" ]; then
      echo "Ahoj Honzíku";
    else
      echo "Ahoj uživateli";
    fi
    
    exit 0

    POZOR, mezera za [ je důležitá! Znak [ je totiž program a to, co následuje za ním, jsou jeho argumenty.

    $ which [
    /usr/bin/[

    Jak jsem už jednou říkal, všechny proměnné v shellu jsou jednoho datového typu. To vysvětluje, proč se řetězce a čísla porovnávají níže popsaným způsobem (výraz, výraz1, výraz2 vrací řetězec a teprve když ho chceme porovnávat jako číslo, tak ho shell bere jako číslo, jinak to je stále řetězec).

    • [ výraz ] - délka řetězce je nenulová
    • [ -z výraz ] - délka řetězce je nulová
    • [ výraz1 == výraz2 ] - řetězce jsou shodné
    • [ výraz1 != výraz2 ] - řetězce jsou různé
    • [ výraz1 -eq výraz2 ] - čísla jsou shodná
    • [ výraz1 -le výraz2 ] - výraz1 <= výraz2
    • [ výraz1 -lt výraz2 ] - výraz1 < výraz2
    • [ výraz1 -ge výraz2 ] - výraz1 >= výraz2
    • [ výraz1 -gt výraz2 ] - výraz1 > výraz2
    • [ výraz1 -ne výraz2 ] - čísla jsou různé

    Testování souborů.

    • [ výraz1 -ef výraz2 ] - soubory sdílejí stejný i-uzel
    • [ výraz1 -nt výraz2 ] - první soubor je novější
    • [ výraz1 -no výraz2 ] - první soubor je starší
    • [ -e výraz ] - soubor existuje
    • [ -d výraz ] - soubor je adresář
    • [ -f výraz ] - soubor je obyčejný soubor
    • [ -L výraz ] - soubor je symbolický odkaz
    • [ -w výraz ] - soubor je zapisovatelný
    • [ -x výraz ] - soubor je spustitelný

    Místo [ můžete používat test. Jsou to stejné programy svázané pevným odkazem.

    $ if test /usr/bin/test -ef /usr/bin/\[; then echo "Je to opravdu tak..."; fi
    Je to opravdu tak...
    $ if [ /usr/bin/test -ef /usr/bin/\[ ]; then echo "Je to opravdu tak..."; fi
    Je to opravdu tak...

    Podmínky samozřejmě můžete spojovat pomocí operátorů && (a zároveň platí) a || (nebo platí).

    # if [ $USER == "root" ] && [ $LANG == "cs_CZ" ]; then
    > echo "Jsi český admin"
    > fi
    Jsi český admin

    Na skriptu case.sh se podíváme na použítí konstrukce
    case slovo in vzory ) příkazy;; ... esac:

    #!/bin/bash
    
    case "$USER" in
      root )
        echo "Ahoj admine"
        ;;
      fuky )
        echo "Ahoj Honzíku"
        ;;
      * )
        echo "Ahoj uživateli"
        ;;
    esac
    
    case "$USER" in
      root | fuky )
        echo "Ahoj Honzíku"
        ;;
      * )
        echo "Ahoj uživateli"
        ;;
    esac
    
    exit 0

    Cykly

    Pro tento díl poslední skript cykly.sh nás zasvětí do používání cyklů for, while a until. Podle mě je dobrým zvykem uzavírat proměnné v podmínkách do uvozovek, protože kdyby proměnná obsahovala např. mezeru nebo nic, došlo by k chybě.

    #!/bin/bash
    
    # Vypíše všechny soubory v adresáři s příponou sh
    for file in *.sh; do
      # Soubor je samozřejmě i adresář a co když nějaký šílenec
      # pojmenuje adresář jmeno_adresare.sh
      if [ -f "$file" ]; then
        echo $file
      fi
    done
    
    # Do $cislo bude postupně dosazovat čísla
    for cislo in 10 20 30 40 50 60 70 80 90 100; do
      echo $cislo
    done
    
    cislo=0
    # Podmínka je splněna jestliže $cislo != 100
    while [ "$cislo" -ne 100 ]; do
      # Konstrukci $(()) zavedl shell ksh a je rychlejší a méně
      # náročná na systémové zdroje než příkaz expr
      cislo=$((cislo + 10))
      echo $cislo
    done
    
    cislo=0
    # Cyklus pokračuje dokud není splněna podmínka
    until [ "$cislo" -eq 100 ]; do
      cislo=$((cislo + 10))
      echo $cislo
    done
    
    exit 0

    Do příště máte za domácí úkol všechno si poctivě vyzkoušet.

    Nejčtenější články posledního měsíce

    Týden na ScienceMag.cz: Hloubkové, přenosové a posílené strojové učení
    Linuxové herní novinky – listopad 2017
    Úvod do GIMPu

    Nejkomentovanější články posledního měsíce

    Týden na ScienceMag.cz: Hloubkové, přenosové a posílené strojové učení
    Jaderné noviny – 14. 12. 2017: MAP_FIXED_SAFE
    Týden na ITBiz.cz – Neutralita a svoboda není totéž
      všechny statistiky »

    Seriál BASH (dílů: 6)

    BASH - I (první díl)
    <—« BASH - II
    »—> BASH - IV
    BASH - VI (poslední díl)

    Související články

    BASH - I (Úvod, editace příkazové řádky)
    BASH - II (Základní příkazy, roury a přesměrování)
    BASH - IV (Funkce a příkazy)
    BASH - V (Dokumenty here, regulární výrazy)
    BASH - VI (Ladění skriptů, odchytávání signálů a příklady)

    Odkazy a zdroje

    BASH - GNU Project

    Další články z této rubriky

    Syncthing
    Twibright Registrator: Instalace, odinstalace, test, základní použití
    Twibright Registrator: fotografie v šeru bez stativu 2
    Twibright Registrator: fotografie v šeru bez stativu 1
    Filtrujeme čtivé texty z Projektu Gutenberg 9
           

    Hodnocení: 43 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    7.11.2003 09:35 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Bludy
    Článek je sice pro začátečníky, ale bludy by se v něm vyskytovat neměly... Předně proměnné nejsou jen jednoho typu, a to i když nepočítám pole za samostatný typ. Bash zná celočíselné proměnné, deklarované declare -i proměnná.
    $ declare -i a b
    $ a=10; echo $a
    10
    $ b=asdgsdg; echo $b
    0
    $ b="a+3*3"; echo $b
    19
    
    Vidíme, že integerové proměnné mají zajímavou vlastnost, že se na nich při přiřazení provádí aritmetická expanse -- je to IMHO čitelnější než $((...)). Dále proměnná USER není žádná vnitřní proměnná shellu a LANG bych také neuváděl zrovna jako příklad vnitřní proměnné shellu, protože shell sám ji používá snad jen v lokalizovaných skriptech -- a ten jsem ještě žádný neviděl ;-)
    if výraz; then příkazy elif výraz; then příkazy else příkazy fi
    potřebuje středníky (nebo konce řádků, to je jedno) i před else a fi.
    7.11.2003 10:57 Maud Lebowski
    Rozbalit Rozbalit vše Bludy
    nerada, ale musim se sneznym muzem souhlasit, asi by tam mela byt zminka o environmentalnich promenych (jako je LANG) na ktere pripouizvani bashe hned narazite a nechapete oc jde
    7.11.2003 18:08 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Bludy
    no ja jen drobnost, že místo výraz bych tam rovnou napsal příkazy, protože tam můžou být libovolné příkazy a pracuje se s návratovým kódem posledního z nich.
    if příkazy then příkazy elif příkazy then příkazy else příkazy fi
    přičemž každý příkaz musí být zakončený středníkem.
    if false;true; then echo OK; fi
    což je vlastně stejné jako
    false;true;if [ $? -eq 0 ];then echo OK;fi
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    Fuky avatar 7.11.2003 19:11 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše RE: Bludy
    Děkuji za připomínky. 1. Proměné jsou jen jednoho datového typu ;-)) declare -i proměná pouze shellu říká, že má předpokládat celečíselnou hodnotu proměné a vyhodnotit jí jako aritmetický výraz. Není to, ale v žádném případě definice nového datového typu. Ve skutečnosti je to stále řetězec ke kterému se shell chová jako k číslu. $ a=1 $ b=2 $ declare -i c $ c="$a + $b" $ echo $c 3 $ d=$(($a + $b)) $ echo $d 3 2. Máte pravdu if výraz; then příkazy elif výraz; then příkazy else příkazy fi si každý může vyložit svým způsobem. Slovem příkazy jsem myslel příkaz1; příkaz2; příkaz3;
    9.11.2003 02:25 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše RE: Bludy
    Ad 1. To je jen takové žonglování se slovíčky. Můžeme samozřejmě říci, že pointer a float v C jsou tytéž datové typy, protože obojí jsou nějaké posloupnosti bajtů (např. čtveřice), jen se s jednou obvykle zachází jako s ukazatelem a s druhou jako s číslem v plovoucí řádové čárce... Nicméně, uživatele jazyka (zejména jazyka vyšší úrovně, jímž shell nepochybně je) naprosto nezajímá, jak jsou věci implementovány interně. Jsou-li proměnné x a y stejného datového typu, musí být možné provést následující přiřazení hodnotou (+ typové konverze)
    y=type_of_y(x)
    x=type_of_x(y)
    
    a proměnná x musí mít tutéž hodnotu co na začátku -- což samozřejmě nefunguje, je-li y integer a x není. Pozn.: Napsal bych, že jde o podmínku nutnou, ale nikoli postačující, ovšem v praxi je to zamotanější, v obskurních jazycích jako C++ či Perl (Tie), se při přiřazení uživatelského typu může stát v podstatě cokoli, takže podmínku nezávislou na konkrétním typovém systému si nedokáži představit...
    Kaacz avatar 1.7.2009 18:31 Kaacz | skóre: 10 | Praha 4
    Rozbalit Rozbalit vše Re: Bludy

    S tím LANG je to právě naopak než si myslíte.

    Právě proto, abyste měl jasně definovaný jazyk výstupů příkazů a aplikací pro následné parsování ve skriptu, je vhodné si na počátku skriptu nastavit LANG=C.

    V dnešní době používání linuxu na desktopu s jazykem jiným než EN to dělám zcela běžně.

    Jsem uz moc stary na pouzivani windows .. / Optimismus je jen nedostatek informaci ..
    7.11.2003 10:33 David | skóre: 21 | Praha
    Rozbalit Rozbalit vše Díky
    Připomínka od Yetiho na místě - souhlasím. Ale rád bych poděkoval autorovi, že se okrádá o svůj čas a píše tento seriál. Čtu ho rád a leccos se přiučím. Díky David.
    8.11.2003 04:54 dany
    Rozbalit Rozbalit vše krajsi for
    stalo by za to uviest for aj trochu inak. predsa len vymenovat vsetky moznosti je blbost, ked ide o cisla, medzi ktorymi je jasny vztah :)
    for ((i=10;i<=100;i=i+10)); do 
      echo $i; 
    done
    
    9.11.2003 02:32 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše krajsi for
    to dost závisí na tom, jestli a jak se ta množina čísel může v budoucnu měnit -- for-cyklus je rozhodně méně čitelný než např.
    for cislo in {1,2,3,4,5,6,7,8,9,10}0; do
      echo $cislo
    done
    
    což je vůbec má oblíbená metoda vytváření seznamů...
    10.11.2003 21:06 Michal Fikera
    Rozbalit Rozbalit vše krajsi for
    Moje oblibena metoda je for i in `seq 10 10 100`.
    27.5.2008 11:42 pou | skóre: 16
    Rozbalit Rozbalit vše Re: krajsi for
    Ahoj, chci si udělat takovy jednoduchy skript, ktery pomoci acping zjisti MAC adresu. v promenne $MAC mam vzdy mac adresu nejakeho pc, kterou chci ulozit do souboru zk. Pokud spustim skript podruhe, potrebuju a by mac adresy kterou uz v souboru jsou se nezapsaly, a nove(ty ktere v souboru "zk" nejsou se do nej zapsaly. Myslel jsem ze by to mohlo vypadat nejak takto:

    #!/bin/bash for ip_adresa in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16; do echo "testuje se adresa $ip_adresa" MAC=`arping -c 1 -I eth0 192.168.30.$ip_adresa | egrep -o '\[.*\]' | tr -d []` echo "promenna MAC je $MAC" if [ $MAC==cat /home/pou/Plocha/zk|grep $MAC]; then echo "adresa uz v souboru je" else $MAC >> /home/pou/Plocha/zk fi
    27.5.2008 11:46 pou | skóre: 16
    Rozbalit Rozbalit vše Re: krajsi for
    Ahoj, chci si udělat takovy jednoduchy skript, ktery pomoci acping zjisti MAC adresu. v promenne $MAC mam vzdy mac adresu nejakeho pc, kterou chci ulozit do souboru zk. Pokud spustim skript podruhe, potrebuju a by mac adresy kterou uz v souboru jsou se nezapsaly, a nove(ty ktere v souboru "zk" nejsou se do nej zapsaly. Myslel jsem ze by to mohlo vypadat nejak takto:
    #!/bin/bash for ip_adresa in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16; do
    echo "testuje se adresa $ip_adresa"
    MAC=`arping -c 1 -I eth0 192.168.30.$ip_adresa | egrep -o '\[.*\]' | tr -d []`
    echo "promenna MAC je $MAC"
    if [ $MAC==cat /home/pou/Plocha/zk|grep $MAC];
    then echo "adresa uz v souboru je"
    else
    $MAC >> /home/pou/Plocha/zk
    fi
    27.12.2012 18:52 Tomáš
    Rozbalit Rozbalit vše Re: BASH - III
    Zdravím, chcel by som sa spýtať ako naplním prememnú sám? neviem na to prísť. Ďakujem
    10.12.2017 11:10 mark12
    Rozbalit Rozbalit vše Re: BASH - III
    This improves the perception of your company by a considerable margin. This is true for any item that you are getting printed. fifty five printing

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.