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 16:22 | IT novinky

CEO Intelu Brian Krzanich rezignoval (tisková zpráva). Oficiálním důvodem je "vztah na pracovišti". S okamžitou platností se dočasným CEO stal Robert Swan.

Ladislav Hagara | Komentářů: 0
dnes 14:11 | Komunita

Konsorcium Linux Foundation ve spolupráci s kariérním portálem Dice.com zveřejnilo 2018 Open Source Jobs Report. Poptávka po odbornících na open source neustále roste.

Ladislav Hagara | Komentářů: 1
dnes 12:44 | Zajímavý článek

Na stránkách linuxové distribuce Ubuntu Studio byla publikována příručka Ubuntu Studio Audio Handbook věnována vytváření, nahrávaní a úpravě zvuků a hudby nejenom v Ubuntu Studiu. Jedná se o živý dokument editovatelný na jejich wiki.

Ladislav Hagara | Komentářů: 0
dnes 12:11 | Zajímavý projekt

Společnost Red Hat koupila na konci ledna společnost CoreOS stojící mimo jiné za odlehčenou linuxovou distribucí optimalizovanou pro běh kontejnerů Container Linux. Matthew Miller, vedoucí projektu Fedora, představil v článku na Fedora Magazine nový podprojekt Fedory s názvem Fedora CoreOS. Fedora CoreOS má být to nejlepší z Container Linuxu a Fedora Atomic Hostu. Podrobnosti v často kladených otázkách (FAQ) a v diskusním fóru.

Ladislav Hagara | Komentářů: 0
dnes 08:00 | Nová verze

Po více než devíti měsících vývoje od vydání verze 11.0 byla vydána verze 12.0 zvukového serveru PulseAudio. Přehled novinek v poznámkách k vydání.

Ladislav Hagara | Komentářů: 9
včera 20:00 | Upozornění

Výbor pro právní záležitosti Evropského parlamentu (JURI) dnes přijal své stanovisko ke kontroverzní novele směrnice, která v EU upravuje autorské právo v online prostředí (Pro: 14, Proti: 9, Zdrželo se: 2). Další kolo legislativního procesu proběhne na začátku července.

Ladislav Hagara | Komentářů: 29
19.6. 19:55 | Zajímavý článek

Byly zveřejněny (pdf) podrobnosti o kritické bezpečnostní chybě CVE-2017-12542 v HPE iLO 4 (Integrated Lights-Out), tj. v proprietárním řešení společnosti Hewlett Packard Enterprise pro vzdálenou správu jejich serverů. Bezpečnostní chyba zneužitelná k obejití autentizace a k vzdálenému spuštění libovolného kódu byla opravena již v květnu loňského roku ve verzi 2.53.

Ladislav Hagara | Komentářů: 15
19.6. 17:55 | Zajímavý projekt

CSIRT.CZ informuje o CTF (Capture the Flag) platformě ZSIS CTF s úlohami pro procvičování praktických dovedností z oblasti kybernetické bezpečnosti a upozorňuje na soutěž Google Capture the Flag 2018, kde je možné vyhrát zajímavé ceny.

Ladislav Hagara | Komentářů: 0
19.6. 17:00 | Komunita

Byly zveřejněny prezentace a videozáznamy přednášek z prvního československého setkání síťových operátorů CSNOG konaného 11. a 12. června v Brně a semináře IPv6 2018 uskutečněného 6. června v Praze.

Ladislav Hagara | Komentářů: 0
19.6. 16:11 | Komunita

Svobodný unixový operační systém FreeBSD slaví 25 let. Přesně před pětadvaceti lety, tj. 19. června 1993, byl vybrán název FreeBSD.

Ladislav Hagara | Komentářů: 0
Jak čtete delší texty z webových stránek?
 (77%)
 (23%)
 (4%)
 (7%)
 (3%)
 (11%)
Celkem 231 hlasů
 Komentářů: 39, poslední dnes 17:44
    Rozcestník

    Dotaz: Skript a proměná

    18.4.2017 14:42 Lederer
    Skript a proměná
    Přečteno: 440×
    Dobrý den,

    # cat skript.sh
    #!/bin/bash
    SNAPSHOT="fotky"
    lvcreate -s -L 2G -n $SNAPSHOT-snap /dev/vg01/$SNAPSHOT
    Mám tady ukázku osekaného skriptíku a můj dotaz spočívá v tom, zda a jak se dá udělat, abych v něm nemusel natvrdo psát proměnnou, ale skript bych spustil např. ./skript.sh fotky a všechny proměnné SNAPSHOT by byly fotky. Pak bych zadal např. ./skript.sh root a všechny proměnné SNAPSHOT by byly root atd. Snad je to pochopitelné. Moc díky za nakopnutí:)

    Odpovědi

    18.4.2017 14:58 PEE
    Rozbalit Rozbalit vše Re: Skript a proměná
    #!/bin/bash
    lvcreate -s -L 2G -n $1-snap /dev/vg01/$1
    18.4.2017 15:02 NN
    Rozbalit Rozbalit vše Re: Skript a proměná
    ./skript.sh foo bar
    
    #!/bin/bash
    
    echo "Skript $0 a parametry $1 a $2."
    
    pVit avatar 20.4.2017 12:14 pVit | skóre: 11
    Rozbalit Rozbalit vše Re: Skript a proměná

    Pro pevný počet argumentů:

    #!/bin/bash

    ARG_COUNT=$#

    SCRIPT_NAME=$0

    ARG_1=$1

    ARG_2=$2

    ARG_3=$3

    echo "NAME - $SCRIPT_NAME, Arguments - $ARG_COUNT, 1. argument - $ARG_1, 2. argument - $ARG_2, 3. argument - $ARG_3"

     

    Výstup:

    pi@raspberrypi:~ $ /home/pi/args prvni druhy treti

    NAME - /home/pi/args, Arguments - 3, 1. argument - prvni, 2. argument - druhy, 3. argument - treti

     

     

    Další možností může být naplnění pole argumenty:

    #!/bin/bash

    declare -a ARG_ARRAY=(`echo $@`);

    for i in "${ARG_ARRAY[@]}"

    do echo $i

    done

     

    Výstup:

    pi@raspberrypi:~ $ /home/pi/arguments jedna dva tri ctyri pet

    jedna

    dva

    tri

    ctyri

    pet

    pi@raspberrypi:~ $

    Writing multithreaded code is easy... to get wrong.
    pVit avatar 20.4.2017 13:37 pVit | skóre: 11
    Rozbalit Rozbalit vše Re: Skript a proměná
    Jinak analogicky k tvému problému můžeš udělat script, který vykoná tvůj příkaz pro všechny argumenty.

    #!/bin/bash

    declare -a ARG_ARRAY=(`echo $@`);

    for i in "${ARG_ARRAY[@]}"

    do

    lvcreate -s -L 2G -n $i-snap /dev/vg01/$i

    done

    Pak si dáš jen ./skript.sh fotky root dalsi dalsi a vytvoří ti to všechno automaticky naráz.

    Writing multithreaded code is easy... to get wrong.
    20.4.2017 13:45 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Skript a proměná

    Jakou výhodu získáte tím polem oproti obvyklému

    while [ $# -gt 0 ]; do
        lvcreate -s -L 2G -n "${1}-snap" "/dev/vg01/$1"
        shift
    done
    

    nebo

    for v in "$@"; do
        lvcreate -s -L 2G -n "${v}-snap" "/dev/vg01/$v"
    done
    

    ?

    pVit avatar 20.4.2017 13:59 pVit | skóre: 11
    Rozbalit Rozbalit vše Re: Skript a proměná
    Síla zvyku, mám radši pole pro přehlednost a orientaci při více odkazech do něj. V tomto jednoduchém případě je samozřejmě lepší využít tvůj způsob.
    Writing multithreaded code is easy... to get wrong.
    20.4.2017 20:17 Kit | skóre: 41 | Brno
    Rozbalit Rozbalit vše Re: Skript a proměná
    Jaké pole? Žádné pole v jeho řešení nevidím. Pouze seznamy.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    20.4.2017 22:18 Andrej | skóre: 45 | blog: Republic of Mordor | Zürich
    Rozbalit Rozbalit vše Re: Skript a proměná

    Slovíčkaření. Když tomu Bash říká Arrays, nevidím důvod nazývat to seznam, najdu tam, co neznám nebo jakkoliv jinak.

    ǑǦŹǓǕǙǞǺǨȞȬḔḦḰḾṊṎṸẄẌỖ
    20.4.2017 22:14 Andrej | skóre: 45 | blog: Republic of Mordor | Zürich
    Rozbalit Rozbalit vše Re: Skript a proměná

    Ne že bych čekal ve jménech zařízení mezery, ale proč je nepodporovat, když to jde? A vůbec, je lepší mít vždycky všechno bezpečně oescapované, pokud se nějak pracuje se vstupem z příkazové řádky.

    #!/bin/bash                                                                                                                                
    ARGS=("$0" "$@")                                                                                                                           
    for idx in "${!ARGS[@]}"; do                                                                                                               
      echo "Argument číslo ${idx}: ${ARGS[idx]}"                                                                                               
    done                                                                                                                                       
    Tohle^^^ taky názorně ukazuje konvenci kolem argv[0] a některé detaily chování "$@". Příklad:
    $ /tmp/zee první 'druhý s mezerami' 't ř e t í' čtvrtý
    Argument číslo 0: /tmp/zee
    Argument číslo 1: první
    Argument číslo 2: druhý s mezerami
    Argument číslo 3: t ř e t í
    Argument číslo 4: čtvrtý
    
    ǑǦŹǓǕǙǞǺǨȞȬḔḦḰḾṊṎṸẄẌỖ
    21.4.2017 17:34 thuner
    Rozbalit Rozbalit vše Re: Skript a proměná
    Tohle by se mělo objevovat častěji, používám to osobně ve skriptu s unison a rsync:
    OPTS1=(-copyprog "rsync -aX --rsh='ssh -p 22 -i /root/.ssh/unison/id_rsa -c arcfour' --inplace"
           -copyprogrest "rsync -aX --rsh='ssh -p 22 -i /root/.ssh/unison/id_rsa -c arcfour' --partial --inplace"
           -copythreshold 0
           -copyquoterem true
           )
    
    unison "${OPTS1[@]}" "${OPTS2[@]}" .....
    
    21.4.2017 19:17 Jindřich Makovička | skóre: 14
    Rozbalit Rozbalit vše Re: Skript a proměná
    To echo je tam zbytečně, viz shellcheck. Stačí
    #!/bin/bash
    declare -a ARG_ARRAY=($@)
    for i in "${ARG_ARRAY[@]}"
    do
        lvcreate -s -L 2G -n "$i-snap" "/dev/vg01/$i"
    done
    
    21.4.2017 19:19 Jindřich Makovička | skóre: 14
    Rozbalit Rozbalit vše Re: Skript a proměná
    Oops, vypadly mi uvozovky v declare -a ARG_ARRAY=("$@")

    Založit nové vláknoNahoru

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

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