regulérní výraz v bash-i

BzF bzf na centrum.cz
Čtvrtek Březen 7 03:58:04 CET 2002


Dobrý den,
potřebuji udělat následující věc pomocí bashe a už nevím jak dál:
Ten skriptik by měl vypsat rozsah zadaných čísel a před ně doplnit nuly.
- tedy dle ukázky (viz. níže):
	0001
	...
	0009
	0010
	...
	0099
	0100
	...
	0999
	atd

v reálu bude snad maximálně 6 úrovní (v ukázce jen 4) čili maximálně 999999
(v ukázce jen 9999);
pro 100 000 - 999 999 (v ukázce 1000-99999) se už žádná nula přidávat
nebude (tolik toho snad nikdy nebude)
(ale pokud se to bude řešit proměnnou, tak to asi bude jedno)

Problém mám v tom, že bych chtěl, aby bylo možno interaktivně zadat i počet
nul, které se mají před čísla doplnit (před jednotky - tedy1-9), a pro každý
další řád (desítky, stovky ...), aby se jejich počet o jednu snížil.
(tedy určit, jestli to začne při zadání pěti 0 vypisovat:
	000001
	000002
	...
	000010
	000011
	...
nebo při zadání dvou 0 vypisovat:
	001
	002
	...
	010
	011
	...

nechci žádné kontroly na to, jestli počet řádů cílového čísla je menší
než počet nul, jestli je Od menší než Do atd...(pokud to bude zapotřebí,
tak to už tam zvládnu dodělat))
A ne to mít tak ošklivě (i když taky funkčně, ale s nutností rejpat
se v tom) zbastlené.


Dík
BzF

(tohle je jen kostra na ukázku, o co mi jde, ve skutečnosti to bude 
složitější, ale s tím už si poradím, resp. mám to hotovo, jen ty nuly musím
před použitím upravit ručně)

----------zacatek----------
#!/bin/bash

echo "Zadej Od kolika cislovat"
read number0

echo "Zadej Do kolika cislovat"
read number1
echo

while [ "$number0" -le "$number1" ]

do
    if [ $number0 -lt 10 ];
	then
	    echo "000$number0";
    fi

    if [ $number0 -ge 10 ] && [ $number0 -lt 100 ];
	then
	    echo "00$number0";
    fi

    if [ $number0 -ge 100 ] && [ $number0 -lt 1000 ];
	then
	    echo "0$number0";
    fi

    if [ $number0 -ge 1000 ] && [ $number0 -lt 10000 ];
	then
	    echo "$number0";
    fi

    if [ $number1 -ge 10000 ];
	then
	    echo "Prilis velke cislo";
	    exit 1
    fi

number0=`expr $number0 + 1`
done
----------konec----------



Další informace o konferenci Linux