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

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

Re: [shell-script] Dúvida


From: Rafael Gomes
Subject: Re: [shell-script] Dúvida
Date: Fri, 13 Nov 2009 10:22:37 -0200

Leandro,

Muito Obrigado pelas explicações!

Você poderia me explicar como eu poderia fazer uma comparação entre dois
arrays por favor ?

___________________________________________________
Rafael Gomes da Silva
Email: address@hidden
MSN: address@hidden
Celular: (61)8108-6000





2009/11/12 Leandro Santiago <address@hidden>

> Colega, talvez lhe falte um conhecimento maior na linguagem. Por
> exemplo, não é uma boa prática usar as crases (`comando`) para executar
> subcomandos, já que elas são visualmente feias e facilitam que vc se
> perca na leitura. Use $(comando).
>
> Outra coisa, comparação no shell frequentemente é feita com o programa
> test, ou seu "apelido", [].
>
> Ou seja,
> if "$diretorio_local_copia_qtdade" -eq "$diretorio_local_temporario_qtdade"
>
> Não existe. Tente
> if [ "$diretorio_local_copia_qtdade" -eq
> "$diretorio_local_temporario_qtdade" ]
>
> Ou, como está usando o bash, que possui vários recursos "embutidos",
> if (( diretorio_local_copia_qtdade == diretorio_local_temporario_qtdade
> )); then
>
> Muito provavelmente isto fará com que o programa entra na instrução do
> if e possa fazer a manipulação do seu array.
>
> E cuidado com a manipulação de arrays, pq quando vc diz
> for i in ${array[@]}; do
>
> Há uma chance bem grande de fazer "cagada", já que em cada iteração o
> for vai usar uma "palavra", ou seja, separada por espaços, o que pode
> prejudicar a manipulação de elementos que contém este caractere.
>
> Há vários jeitos de contornar isso, mas um jeito bem bashiano (e comum
> em linguagens mais antigas) é:
>
> comp=${#array[@]} # quantidade de elementos no array
> for (( i=0; i < comp ; i++ )); do
> faça alguma coisa com "${array[$i]}"
> done
>
> Eu quando sei que vou usar o bash faço de tudo para usar o máximo de
> recursos que ele oferece. Tá, chamam de "bashismo", mas se está lá (no
> bash), então é para ser usado :-)
>
> PS: já tentou usar algo como o rsync?
>
> Rafael Gomes wrote:
> >
> > Pessoall,
> >
> > Estou com um problema no meu array que não consegue ser incrementado.
> >
> > --------------------------------------------
> > #!/bin/bash
> >
> > #endereco ip do servidor
> >
> > #servidor=$1
> >
> > #Diretorio de copia do Mainframe para a maquina linux
> > diretorio_local_copia=/root/lab1
> >
> > #Diretorio de comparacao com a copia realizada localmente
> > diretorio_local_temporario=/root/lab2
> >
> > #Comparar os diretorios temporarios
> >
> > diretorio_local_copia_qtdade=`ls -al $diretorio_local_copia| wc -l`
> > diretorio_local_temporario_qtdade=`ls -al $diretorio_local_temporario| wc
> > -l`
> >
> > if "$diretorio_local_copia_qtdade" -eq
> > "$diretorio_local_temporario_qtdade"
> > then
> > echo "Diretorios tem quantidades iguais"
> > else
> > array_comparacao=( $( diff $diretorio_local_copia
> > $diretorio_local_temporario| cut -d' ' -f4))
> > echo ${array_comparacao[@]}
> > for i in ${array_comparacao[@]}; do
> > cp $diretorio_local_copia/${array_comparacao[*]}
> > $diretorio_local_temporario
> > done
> > fi
> >
> > ----------------------------------------------
> >
> > A intenção deste script é verificar se existe a mesma quantidade de
> > arquivos
> > no diretório lab2.
> > Caso não exista os arquivos são copiados da pasta lab1 para a pasta lab2.
> > Neste passo da cópiia que está ocorrendo o meu problema.
> >
> > Alguém pode dar uma luz sobre o que pode estar acontecendo ?
> >
> > Obrigado !
> > ___________________________________________________
> > Rafael Gomes da Silva
> > Email: address@hidden
> > <mailto:rafael%40inspiretecnologia.com.br<rafael%2540inspiretecnologia.com.br>
> >
> > MSN: address@hidden <mailto:rafstrat%40hotmail.com<rafstrat%2540hotmail.com>
> >
> > Celular: (61)8108-6000
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
>
>
>
> ------------------------------------
>
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
> aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em
> http://www.listas-discussao.cjb.net
> ---------------------------------------------------------------------
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
>
> Links do Yahoo! Grupos
>
>
>


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



reply via email to

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