Olá pessoal,
Consegui resolver o meu problema da seguinte forma:
#!/bin/bash
#Define as variaveis
variavel=1
valor=1
DADOS="/dados/"
#Verifica a condição
while [ $variavel = $valor ]; do
#Conta quanto caracteres a variavel valor tem
cont=`expr length $valor`
#Se tiver 1 caracter, acrescenta 7 zeros na frente do numero
if [ $cont -eq 1 ]; then
zero=0000000
valor2=$zero$valor
mkdir $DADOS$valor2
chgrp -R clientes $DADOS$valor2
chmod -R 740 $DADOS$valor2
echo $DADOS$valor2
fi
#Se tiver 2 caracter, acrescenta 6 zeros na frente do numero
if [ $cont -eq 2 ]; then
zero=000000
valor2=$zero$valor
mkdir $DADOS$valor2
chgrp -R clientes $DADOS$valor2
chmod -R 740 $DADOS$valor2
echo $DADOS$valor2
fi
#Se tiver 3 caracter, acrescenta 5 zeros na frente do numero
if [ $cont -eq 3 ]; then
zero=00000
valor2=$zero$valor
mkdir $DADOS$valor2
chgrp -R clientes $DADOS$valor2
chmod -R 740 $DADOS$valor2
echo $DADOS$valor2
fi
#Se tiver 4 caracter, acrescenta 4 zeros na frente do numero
if [ $cont -eq 4 ]; then
zero=0000
valor2=$zero$valor
mkdir $DADOS$valor2
chgrp -R clientes $DADOS$valor2
chmod -R 740 $DADOS$valor2
echo $DADOS$valor2
fi
#Se tiver 5 caracter, acrescenta 3 zeros na frente do numero
if [ $cont -eq 5 ]; then
zero=000
valor2=$zero$valor
mkdir $DADOS$valor2
chgrp -R clientes $DADOS$valor2
chmod -R 740 $DADOS$valor2
echo $DADOS$valor2
fi
#Se tiver 6 caracter, acrescenta 2 zeros na frente do numero
if [ $cont -eq 6 ]; then
zero=00
valor2=$zero$valor
mkdir $DADOS$valor2
chgrp -R clientes $DADOS$valor2
chmod -R 740 $DADOS$valor2
echo $DADOS$valor2
fi
#Se tiver 7 caracter, acrescenta 1 zero na frente do numero
if [ $cont -eq 7 ]; then
zero=0
valor2=$zero$valor
mkdir $DADOS$valor2
chgrp -R clientes $DADOS$valor2
chmod -R 740 $DADOS$valor2
echo $DADOS$valor2
fi
#Se o valor for iagual 2000200, diminui 10000 para sair do loop
if [ $valor -eq 2000200 ]; then
valor=`expr $valor + 198765`
fi
#Soma a variavel +1, para continuar no loop
valor=$(($valor + 1))
variavel=$(($variavel+1))
done
2009/6/4 Anderson Kaiser <[email protected]>
>
>
> 2009/6/3 Jeiks <[email protected] <jacsonrcsilva%40gmail.com>>
>
> >
> >
> > Opa,
> > gente... puxando um pouquinho pra mais assuntos... sei que deve ter como
> > melhorar, mas olha:
> > se eu fizer:
> >
> > mkdir {001,002,003,004}
> >
> > ele cria, sem problemas os diretorios 001, 002, 003 e 004.
> > Então seria interessante, se fosse possível, criar uns 100 diretórios
> > assim:
> >
> > mkdir {`seq -s , -w 100`}
> >
> > porém não funciona, penso que seja a ordem que o shell executa as
> > funções.
> > Mas assim funciona:
> >
> > bash -c "$(echo mkdir {$(seq -s , -w 100)})"
> >
> > O comando "seq" e depois o "echo" são primeiramente interpretados e a
> > expressão correta é escrita. Esta então é interpretada pelo nosso bash.
> > Como viram, ficou uma coisa feia que só.... hehehe
> > Gostaria de saber se alguem tem idéia de como a gente melhora isso,
> > porém seguindo a mesma idéia de utilizar as chaves e algo pra não termos
> que
> > digitar todo os 100 algarismos.
> >
> > abraços a todos
>
> Por que não usar assim, para seu exemplo:
>
> for i in $(seq 200) ; do mkdir $i ; done
>
> --
> Anderson Kaiser
> [email protected] <alpkaiser%40gmail.com>
> Linux User #: 426240
>
>
[As partes desta mensagem que não continham texto foram removidas]