abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 04:55 | Zajímavý software

    Microsoft zveřejnil na GitHubu zdrojové kódy MS-DOSu 4.0 pod licencí MIT. Ve stejném repozitáři se nacházejí i před lety zveřejněné zdrojové k kódy MS-DOSu 1.25 a 2.0.

    Ladislav Hagara | Komentářů: 17
    včera 17:33 | Nová verze

    Canonical vydal (email, blog, YouTube) Ubuntu 24.04 LTS Noble Numbat. Přehled novinek v poznámkách k vydání a také příspěvcích na blogu: novinky v desktopu a novinky v bezpečnosti. Vydány byly také oficiální deriváty Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio, Ubuntu Unity a Xubuntu. Jedná se o 10. LTS verzi.

    Ladislav Hagara | Komentářů: 13
    včera 14:22 | Komunita

    Na YouTube je k dispozici videozáznam z včerejšího Czech Open Source Policy Forum 2024.

    Ladislav Hagara | Komentářů: 2
    včera 13:22 | Nová verze

    Fossil (Wikipedie) byl vydán ve verzi 2.24. Jedná se o distribuovaný systém správy verzí propojený se správou chyb, wiki stránek a blogů s integrovaným webovým rozhraním. Vše běží z jednoho jediného spustitelného souboru a uloženo je v SQLite databázi.

    Ladislav Hagara | Komentářů: 0
    včera 12:44 | Nová verze

    Byla vydána nová stabilní verze 6.7 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 124. Přehled novinek i s náhledy v příspěvku na blogu. Vypíchnout lze Spořič paměti (Memory Saver) automaticky hibernující karty, které nebyly nějakou dobu používány nebo vylepšené Odběry (Feed Reader).

    Ladislav Hagara | Komentářů: 0
    včera 04:55 | Nová verze

    OpenJS Foundation, oficiální projekt konsorcia Linux Foundation, oznámila vydání verze 22 otevřeného multiplatformního prostředí pro vývoj a běh síťových aplikací napsaných v JavaScriptu Node.js (Wikipedie). V říjnu se verze 22 stane novou aktivní LTS verzí. Podpora je plánována do dubna 2027.

    Ladislav Hagara | Komentářů: 0
    včera 04:22 | Nová verze

    Byla vydána verze 8.2 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a v informačním videu. Zdůrazněn je průvodce migrací hostů z VMware ESXi do Proxmoxu.

    Ladislav Hagara | Komentářů: 0
    včera 04:11 | Nová verze

    R (Wikipedie), programovací jazyk a prostředí určené pro statistickou analýzu dat a jejich grafické zobrazení, bylo vydáno ve verzi 4.4.0. Její kódové jméno je Puppy Cup.

    Ladislav Hagara | Komentářů: 0
    24.4. 22:44 | IT novinky

    IBM kupuje společnost HashiCorp (Terraform, Packer, Vault, Boundary, Consul, Nomad, Waypoint, Vagrant, …) za 6,4 miliardy dolarů, tj. 35 dolarů za akcii.

    Ladislav Hagara | Komentářů: 14
    24.4. 15:55 | Nová verze

    Byl vydán TrueNAS SCALE 24.04 “Dragonfish”. Přehled novinek této open source storage platformy postavené na Debianu v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    KDE Plasma 6
     (73%)
     (9%)
     (2%)
     (16%)
    Celkem 785 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    BASH - kostra většího skriptu

    27.5.2008 13:09 | Přečteno: 2081× | Praxe | Výběrový blog | poslední úprava: 27.5.2008 13:17

    V průběhu používání *uxu jsem zjistil, že používám stále stejnou sadu užitečných postupů při tvoření BASH skriptů.

    Vytvořil jsem si šablonu a protože jsou v ní věci které považuji za opravdu užitečné a nenašel jsem je nikde dané pěkně pohromadě, tak ji dávám v plen. Snad se bude někomu hodit.

    #!/bin/bash
    
    #set -x 
    # Debug output ?
    DBG=n
    DBG=y
    
    ### Uitlity Variables #################
    PRGNAME=`basename ${0}`
    
    ## needed for singleton scripts (see function make_pid_file() )
    #PIDFILE="/var/run/${PRGNAME}.pid"       # system scope (need root access)
    #PIDFILE="/tmp/${PRGNAME}.pid"           # system scope (user access) 
    PIDFILE="/tmp/${PRGNAME}.${USER}.pid"   # user scope
    
    # Try get CFG from /etc/$CFGNAME, ~/.$CFGNAME and
    #    mandatory cfg from /etc/$CFGNAME.mandatory
    # if $CFGNAME is empty do not use cfg files
    CFGNAME="${PRGNAME}"                    # if empty do not use cfg files
    #CFGNAME=""
    
    ### User Variables #####################
    
    
    ### Utility functions ##################
    function dbg() {
        [ "s${DBG}" = "sy" ] && echo -e "DBG: ${@}" 1>&2
    }
    
    function err() {
        dbg "function err()"
        echo -e "${PRGNAME}: ${@}" 1>&2
    }
    
    function die() {
        dbg "function die()"
        se=${1}
        shift
        err ${@}
        exit "${se}"
    }
    
    function load_config() {
        dbg "function load_config()"
    
        [ -z ${CFGNAME} ] && dbg '  $CFGNAME not set, no cfg needed' && return
    
        # Try get CFG from /etc/$CFGNAME, ~/.$CFGNAME and
        #    mandatory cfg from /etc/$CFGNAME.mandatory
        CFGloaded=n
    
        for cfg in "/etc/${CFGNAME}" "~/.${CFGNAME}" "/etc/${CFGNAME}.mandatory"
        do
            if [ -r "${cfg}" ]
            then
                . ${cfg} || die 1 "Loading configuration from ${cfg} failed."
                dbg "  lodaing cfg. from ${cfg}"
                CFGloaded=y
            fi
        done
    
        [ "s${CFGloaded}" = "sn" ] && die 2 "No configuration file found in: " \
            "/etc/${CFGNAME}" "~/.${CFGNAME}" "/etc/${CFGNAME}.mandatory" 
    }
    
    
    function cleanup() {
        dbg "function cleanup()"
    
        # make a clean up think
        if [ -n "${PIDFILE}" -a -r "${PIDFILE}" ] 
        then
            rm -f "${PIDFILE}" \
                || err "${PRGNAME}# Can not delete PID file: ${PIDFILE}"
        fi
    }
    
    function make_pid_file() {
        dbg "function make_pid_file()"
        
        [ -z ${PIDFILE} ] && dbg '  $PIDFILE is not set, not using it' && return 
    
        # Single ton scope is set by PIDFILE value
        # PIDFILE="/var/run/${PRGNAME}.pid" is in system scope (need root access)
        # PIDFILE="/tmp/${PRGNAME}.pid" is in system scope (user access) 
        # PIDFILE="/tmp/${PRGNAME}.${USER}.pid" is in user scope 
    
        if [ -f ${PIDFILE} ]
        then
            ## Another instance is running
            OTHER_PID=`cat ${PIDFILE}`
            err "EXITING\n  Pid file found: ${PIDFILE}"
            err "  Probably another instance of ${PRGNAME} is running. (PID=${OTHER_PID})"
            die 127 "Check-it please ..." 
        else
            echo "${$}" > "${PIDFILE}" 2>/dev/null
            [ -f "${PIDFILE}" ] || \
                die 126 "${PRGNAME}# Can not create PID file: ${PIDFILE}"
            chmod 600 "${PIDFILE}"
        fi 
    }
    
    ### Cfg. Loading ###################
    load_config
    
    ### Pre Run Checks #################
    dbg "### Additional Checks ###"
    # if it has to be singleton (see make_pid_file() for info. about scope)
    make_pid_file
    
    
    #######################################
    dbg "setting trap"
    # in case of any exit run cleanup procedure
    #         0 means normal exit so you can not do cleanup "by hand"
    trap cleanup 0 2 3 4 9 11 15            # I know, I know at least 9 can not by catched
    
    ### Main Part##########################
    dbg "### Main Part ###"
    
    
    #######################################
    
    
           

    Hodnocení: 100 %

            špatnédobré        

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

    Komentáře

    Vložit další komentář

    27.5.2008 14:01 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    function dbg_init () {
        case "$1" in
            '-') exec 4>&1 ;;
            '') exec 4>/dev/null ;;
            *) exec 4>>"$1" ;;
        esac
    }
    
    # dbg_init
    # dbg_init '-'
    # dbg_init "/var/log/${PROGNAME}.log"
    
    function dbg() {
        echo -e "DBG: ${@}" >&4
    }
    
    
    27.5.2008 14:05 pht
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    takovych veci, a staci na to jeden radek v perlu. :)
    finc avatar 27.5.2008 15:15 finc | skóre: 8 | blog: Finc | Kolín
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    Šum na lince?
    Kdo Vam dal pravo ty lidi urazet? A kdo ti dal pravo cumet z okna, ty kr.vo!
    Shadow avatar 27.5.2008 15:17 Shadow | skóre: 25 | blog: Brainstorm
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    Tak sem s ním.
    If we do not believe in freedom of speech for those we despise we do not believe in it at all.
    27.5.2008 15:34 kain
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    ak sa nemylim tak diskutujuci vyssie mal na mysli funkciu DBG ktora sa da riesit v perle prepinacom perl -w. Ale perlom prilis nevladnem a moja domnienka moze byt zla.
    27.5.2008 21:07 pht
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    funkce die - existuje primo

    humbuk kolem dbg - viz smart comments

    load_config - staci si vybrat ... bashoidni konfigy, klasicka inicka, yaml, ... pokazdy mate nacteni pomoci jedne funkce

    prasovani command lajny (getopt) kouknete se na getopt::euclid

    ...
    28.5.2008 07:20 Qaxi | skóre: 14 | blog: Qaxi
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    $ ll `which bash` -rwxr-xr-x 1 root root 702160 2008-05-12 20:33 /bin/bash

    a to je komplet

    $ ll `which perl` -rwxr-xr-x 1 root root 1080468 2007-11-27 12:08 /usr/bin/perl $ du -s /usr/lib/perl/5.8.8/ 11048 /usr/lib/perl/5.8.8/

    tj. dohromady 12M ...

    700K <> 12000K a tomu odpovídají i možnosti ;-)

    Navíc perl opravdu není všude ...
    Alík avatar 28.5.2008 13:46 Alík | Iglau
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    Navíc perl opravdu není všude ...
    To BASH taky ne ;-)
    Kdo se nezfetuje, bude ožrán!
    28.5.2008 14:11 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    Ale i do Windows se dá doinstalovat... ;-)
    28.5.2008 14:24 Qaxi | skóre: 14 | blog: Qaxi
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    Ale i do Windows se dá doinstalovat... ;-)
    To BASH taky ... (já ve Win používám ZSH, ale BASH jsem taky někde viděl) Vždyť Win mají POSIX layer neeeeee ;-)
    28.5.2008 14:56 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    Já měl na mysli právě Bash. ;-)
    28.5.2008 18:08 pht
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    to ano, proti tomu se nebranim. treba kdyz to udelate v asm, tak pudete na 2kb. ale o to nejde. v bashi delejte utilitky na par radku, slozitejsi veci ve slozitejsim jazyce. reste kde die() pouzit a ne jak ho udelat.
    28.5.2008 20:07 Qaxi | skóre: 14 | blog: Qaxi
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    Ale tohle JE na pár řádků ... navíc RW nikoliv RO ;-)

    Pro ošetření toho, aby se nějaký program spustil v jednom čase jen jednou nepotřebuji složitější jazyk. Na to stačí BASH viz. tento spot.

    V nadpisu spotu je BASH ... pokud Vás to irituje, prosím už ho nečtěte a ani diskuse pod ním.
    xkucf03 avatar 27.5.2008 17:16 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    Mně taky nejde moc dohromady BASH a "větší skript", akorát jsem nechtěl zbytečně rýpat. Každý máme nějaký svůj oblíbený jazyk. (ale obecně považuji skriptování spíš za nesystémovou záležitost, kterou se záplatuje chybějící funkcionalita softwaru)
    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    27.5.2008 18:18 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    Typický windowsák? ;-) Aneb ukaž mi software, který dělá úplně všechno. Spousta malých nástrojů pohromadě sice taky neudělá úplně všecho, ale myslím, že udělají mnohem víc, než software, jehož tvůrci si bůhvíproč mysleli, že musí umět všechno včetně RFC 2324. :-)
    xkucf03 avatar 27.5.2008 19:46 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    software, jehož tvůrci si bůhvíproč mysleli, že musí umět všechno

    Spíš než takový monstrózní software považuji za ideální jednotlivé komponenty, které jsou integrované nějakým lepším způsobem, než jsou skripty v BASHi. Mám radši systém tažený událostmi, než takový, který musí být neustále popoháněn pomocí skriptů* aby vůbec fungoval (obvykle periodicky spouštěných cronem).

    Ale je fakt, že svět není ideální a bez skriptů se člověk neobejde, alespoň bez těch init.d (pokud nepoužívá nejmenovaný úžasný OS se svcadm).

    BTW: to RFC se mi líbí a patička je super :-)

    *) které navíc psal admin nikoli programátor a tester kolem nich neprošel ani cestou na oběd :-)

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    27.5.2008 20:33 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    Spíš než takový monstrózní software považuji za ideální jednotlivé komponenty, které jsou integrované nějakým lepším způsobem, než jsou skripty v BASHi. Mám radši systém tažený událostmi, než takový, který musí být neustále popoháněn pomocí skriptů* aby vůbec fungoval (obvykle periodicky spouštěných cronem).
    Teď mluvíš o Emacsu... ;-) (Aneb událostmi řízený systém s mnoha jednotlivými komponentami, integrovanými v jednoduchém, ale mocném dynamickém jazyku.)
    xkucf03 avatar 27.5.2008 21:02 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    Spíš o SOA. Ale s tím je problém, že polovina lidí ho odmítne, protože je příliš drahé a druhá polovina proto, že je to buzzword. A jen málokdo chápe, že to jsou v první řadě obecné principy a ne nějaký (ku*evsky drahý) software, a tak se denně na milionech počítačích stále pouštějí periodicky nějaké dávkové skripty a přelívají se terabajty dat.
    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    Fluttershy, yay! avatar 27.5.2008 19:47 Fluttershy, yay! | skóre: 92 | blog:
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    Aneb ukaž mi software, který dělá úplně všechno.

    Bez váhání dávám Emacs. ^_^

    🇵🇸Touch grass🇺🇦 ✊ no gods, no masters
    27.5.2008 20:36 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    Říkám to nerad, ale Emacs RFC 2324 skutečně podporuje, takže i to kafe uvaří. :-D Ale ten hardware si pro to budu muset asi udělat sám... :-(
    28.5.2008 08:30 Qaxi | skóre: 14 | blog: Qaxi
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    Jo Jo

    Větší script je tak na čtyři terminály, pak už je to na něco kompilovaného ...

    Třeba na javu ;-) ;-) ;-) ;-) ;-) ;-)
    27.5.2008 16:07 Tomáš | skóre: 31 | blog: Tomik
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    Ještě mi tam chybí nějaké parsování parametrů. Kdysi jsem něco našel. Je to taky jenom kostra, chce to dopsat, co to vlastně má dělat.

    #!/bin/sh
    help(){
    echo Usage: $0 
    }
    
    if [ $# -lt 1 ]
    then
      help
    else
      echo OK
    fi
    
    while getopts h opt
    do
      case $opt in
        h) help;;
        \?) help;;
      esac
    done
    shift $(($OPTIND - 1))
    
    echo Running
    
    27.5.2008 18:23 Chocolate Bear | blog: Chocolate Bear
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    Jak jako kostra? Tohle by přece po úpravě menší než drobné by mohlo jít nainkůdovat tečkou, no ni?
    THIS IS SPARTA!
    28.5.2008 07:27 Qaxi | skóre: 14 | blog: Qaxi
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    No jasně ...

    Kostra je to proto, abyses mohl rozhodnout jestli to budeš psát přímo nebo to natečkuješ.

    U nekompilovaných věci se spíš kloním k nesdílení "knihoven", je tam riziko, že uděláš v knihovně změnu a "kompilátor bash" tě neupozorní na chybku ... ;-) Prostě mi skripty přijdou příliš křehký ...
    Marián Kyral avatar 27.5.2008 20:07 Marián Kyral | skóre: 29 | blog: Sem_Tam | Frýdek-Místek
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    [ "s${DBG}" = "sy" ] && echo -e "DBG: ${@}" 1>&2
    Jaký je rozdíl oproti [ "${DBG}" = "y" ] && echo -e "DBG: ${@}" 1>&2 ?
    David Watzke avatar 27.5.2008 20:26 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    Lepší je nastavit DBG na true/false, pak lze rovnou
    $DBG && echo -e "DBG: $@" >&2
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    28.5.2008 08:27 Qaxi | skóre: 14 | blog: Qaxi
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    souhlas

    Nedělám to ze dvou důvodů:

    1) musíte DBG mít definovanou a nesmíte tam mít nic jiného než "true" nebo "false", jinak je výsledek těžko předvídatelný a nebo dokonce řachne script ...
    $ DBG=true
    $ $DBG && echo "OK"
    OK
    $ 
    $ DBG=false
    $ $DBG && echo "OK"
    $ 
    $ DBG=jabaduba
    $ $DBG && echo "OK"
    bash: jabaduba: command not found     
    # šlo by ošetřit pomocí set -e - bash by po takovéto chybě nepokračovat 
    $ 
    $ unset DBG
    $ $DBG && echo "OK"
    OK
    # je to opravdu chování které autor chtěl?
    $ 
    
    2) na shellech kde "true", "false" a "test" jsou uvnitř shellu je téměř jedno který z nich voláte a s "test" máte jistotu CO to udělá.
    27.5.2008 21:04 pht
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    rozdil je ze kdyz nemate DBG definovane vubec tak by "" = "y" udelalo b0rk...
    27.5.2008 21:05 Chocolate Bear | blog: Chocolate Bear
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    Minimálně v BASHi teda určitě ne.
    THIS IS SPARTA!
    Marián Kyral avatar 27.5.2008 21:11 Marián Kyral | skóre: 29 | blog: Sem_Tam | Frýdek-Místek
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    Fakt? Já myslel, že se porovná prázdný řetězec s řetězcem "y". A to normálně funguje:
    # set |grep DBG
    # [ "${DBG}" = "y" ] && echo Yes || echo No
    No
    # DBG=y
    # [ "${DBG}" = "y" ] && echo Yes || echo No
    Yes
    #
    GandY avatar 28.5.2008 09:31 GandY | skóre: 3 | blog: Zo života | Bratislava
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    to sa dá vyriešiť aj substitúciou:
    # [ "${DBG:-n}" = "y" ] && echo Yes || echo No
    ak premenná DBG nie je nastavená, tak sa použije hodnota 'n'.
    28.5.2008 15:07 Qaxi | skóre: 14 | blog: Qaxi
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    Jasně, ale pak je to totální BASHismus a na jiném shellu to nemá ani šanci chodit ...

    Ten původní kód by s maličkýma úpravama mohl chodit skoro kdekoliv ...
    GandY avatar 28.5.2008 16:59 GandY | skóre: 3 | blog: Zo života | Bratislava
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    no mne to funguje aj v korn shell a to aj pod AIX a HP-UX
    28.5.2008 17:14 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    WTF? RTFM! :-)
    28.5.2008 19:35 Qaxi | skóre: 14 | blog: Qaxi
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    Fakt ... koukam jako trubka. :-< Děkuj za doplnění vzdělání.

    Já to bral jako BASHismus a ono je to POSIXové.

    Nejstarší normu na POSIX jsme našel IEEE Std 1003.1,2001 Edition a tam to je taky.

    A všechny (/usr)/bin/sh co mám dostupné tak to nahradí správně
    $ echo "${QQQ:-www}"
    www
    $
    
    Nedostanete se někdo ke starším verzím? Jak je to tam?
    28.5.2008 19:59 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    Fakt ... koukam jako trubka. :->
    Zlomená? ;-) Pajpa přeci kouká takhle: :| :-D
    28.5.2008 20:30 Qaxi | skóre: 14 | blog: Qaxi
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    Opravuji

    ... koukám jako zlomená trubka. :->
    28.5.2008 07:58 Qaxi | skóre: 14 | blog: Qaxi
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    žádný

    Když tak o tom přemýšlím tak je to trik který jsem se naučil na nějakém opravdu starém U*xu. Mám pocit, že to souviselo se shellem v POSIX režimu, ale už opravdu nevím.

    Vidíte jak se člověka drží staré a leckdy už dávno nepotřebné konstrukce.
    $ DBG="y"
    $ 
    $ [ "s${DBG}" = "sy" ] && echo OK
    OK
    $ 
    $ [ "${DBG}" = "y" ] && echo OK
    OK
    $ 
    $ [ ${DBG} = "y" ] && echo OK
    OK
    $ 
    $ [ $DBG = "y" ] && echo OK
    OK
    $ 
    $
    $
    $ DBG="n"
    $ 
    $ [ "s${DBG}" = "sy" ] && echo OK
    $ 
    $ [ "${DBG}" = "y" ] && echo OK
    $ 
    $ [ ${DBG} = "y" ] && echo OK
    $ 
    $ [ $DBG = "y" ] && echo OK
    $
    $
    $
    $ 
    $ unset DBG
    $ 
    $ [ "s${DBG}" = "sy" ] && echo OK
    $ 
    $ [ "${DBG}" = "y" ] && echo OK
    $ 
    $ [ ${DBG} = "y" ] && echo OK
    bash: [: =: unary operator expected
    $ 
    $ [ $DBG = "y" ] && echo OK
    bash: [: =: unary operator expected
    $ 
    
    28.5.2008 09:08 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    žádný

    Když tak o tom přemýšlím tak je to trik který jsem se naučil na nějakém opravdu starém U*xu. Mám pocit, že to souviselo se shellem v POSIX režimu, ale už opravdu nevím.
    ten "trik" je o imho viac o používaní uvodzoviek ako o starom U*x-e :-)
    28.5.2008 11:32 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    V bashi tam rozdíl není, ale na některých systémech existují verze příkazu test, které si neporadí s [ "$x" = "y" ], není-li proměnná x nastavena. Pokud je ale na začátku skriptu '#!/bin/bash', je zbytečné toto zaříkávání provádět.
    28.5.2008 15:11 Qaxi | skóre: 14 | blog: Qaxi
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    Aha, odsud vítr fouká ... Díky za připomenutí.
    Pokud je ale na začátku skriptu '#!/bin/bash', je zbytečné toto zaříkávání provádět.
    Jasně, prostě se člověk snaží psát přenositelně, i když má rád BASH. Schválně to otestuji v POSIX režimu a potom na
    /bin/sh
    na HP/UX a solarisu ... dám vědět.
    Marián Kyral avatar 28.5.2008 16:03 Marián Kyral | skóre: 29 | blog: Sem_Tam | Frýdek-Místek
    Rozbalit Rozbalit vše Re: BASH - kostra většího skriptu
    Testoval jsem to v práci na nějakém AIXu, /bin/ksh a /bin/sh - funguje bez problémů.

    Založit nové vláknoNahoru

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