Jednoduchy skriptik II

Miroslav BENES mbenes na tenez.cz
Čtvrtek Duben 27 11:27:29 CEST 2000


> Kdyz nepouzijete shift tak je to nekonecna smycka. Kdyz tam date shift tak to
> bude brat jeden argument za druhym dokud nenarazi na argument ktery je
> neexistujicim souborem.

shift jsem tam mel (omlouvam se za mystifikaci), ale hlasilo to 
syntaktickou chybu na "done".

> Pokud se maji zpracovat vsechny argumenty z prikazove radky a ma se osetrit
> pripad kdy se zadavatel preklepl a zadal omylem neexistujici soubor pak bych
> to resil asi takhle

> while [ $# -gt 0 ] ; do  # existuje nejaky argument ke zpracovani ?
>   if [ -f $1 ] ; then  # je argument existujici soubor ?
>      ..
>      prikazy      # ano proved prislusne akce
>      ..
>   fi
>   shift                      # posun se na dalsi argument
> done

Mam to v tomto tvaru a porad je to blbe :


#!/bin/sh

while [ $# -gt 0 ]
    if [ -f $1 ]; then

        SECFROM1970=`head -c9 $1`
        FULLDATE=`convdate -c $SECFROM1970`

        ROK=...
        MESIC=...
		DEN=...
		HODINA=...

        NOVYNAZEV=$ROK'-'$MESIC'-'$DEN'_'$HODINA'.log'
        echo $NOVYNAZEV

    fi

    shift
done


Ve skoro stejne podobe jsem to vcera vycetl z manualu a hlasilo to 
(stejne jako dnes) :

# ./test *
./test: syntax error near unexpected token `done'
./test: ./test: line 20: `done'

Co tam jeste muze byt spatne ? RH6.1cz, bash-1.14.7-16.

> awk je jeste chytrejsi :-)
> Zkuste:
> awk '{printf("%d%s%02d", $5,$2,$3)}'

Taky dobry ! To pouziju ! 

> S tim neciselnym mesicem bych se smiril, s konverzi je dost prace:

Ja se radsi smirim s tim, ze 12x spustim sed. i kdyz "je to drsny" 
(resp. casem napisu case, coz je programatorsky cistsi). Pokud budu 
mit mesice ve tveru cisla, muzu si soubory tridit, muzu si z nazvu 
jednoduse dopocitat predchozi / nasledujici apod.


Diky vsem.


--------------------------
Miroslav BENES
E-mail   : mbenes na tenez.cz
TENEZ Chotebor, a.s
--------------------------


Další informace o konferenci Linux