shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Re: Ajuda Urgente com FORO


From: Rafael Tomelin
Subject: Re: [shell-script] Re: Ajuda Urgente com FORO
Date: Thu, 4 Jun 2009 11:23:07 -0300

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 <address@hidden>

>
>
> 2009/6/3 Jeiks <address@hidden <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
> address@hidden <alpkaiser%40gmail.com>
> Linux User #: 426240
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]