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