+ Responder ao Tópico

  1. #1
    d00m
    Pessoal,
    Estou tentando montar um pequeno shell script que leila meu /etc/group e gere um vetor area[GID]=nomegrupo.

    Para isso estou usando o awk e aplicando condições para ele buscar uma faixa de GIDs apenas e jogando a saida dele para um while para trabalhar com cada grupo separadamente.

    Código:
    awk -F&#58; '$3 >= 500 && $3 <= 600 &#123;print $1 " " $3&#125;' /etc/group | while read group gid;
    do
     area&#91;$gid&#93;=$group;
    done;
    Dentro do bloco do while, eu consigo acessar o valor da variável area, mas fora, ela esta sempre em branco. (echo ${area[500]} retorna vazio)


    Tentei declarar a variável area atravez de um declare -ax antes de iniciar o bloco mas não obtive resultado.
    Eu nunca tinha usado o declare e existem grandes chances de estar cometendo algum erro

    Agradeço qualquer idéia sobre o que pode ser feito.

  2. ja ta complicando ....

    eu jah faria em perl isso, se envolve essas coisas "mais avancadas".


    open(file, "/etc/group");

    while (<file>) {
    $grupo , $gid = split (":");
    $hash{$gid} = $grupo;
    }

    close(file);

    for each $key in keys %hash
    {
    print "$key -> $hash{$key}\n";
    }

    acho que isso ae jah eum comeco.

    www.perl.org



  3. #3
    Mav3r1ck
    Olá comunidade,
    tb faria em perl... dá uma olhada:

    while (($nome, $lixo, $gid) = getgrent) {
    $gid{$nome} = $gid;
    }

    ou poderia ser o contrário: (acho q é assim q vc quer)

    while (($nome, $lixo, $gid) = getgrent) {
    $gid{$gid} = $nome;
    }

    Agora se naum quiser, tenta escrever o valor da area que vc possui dentro do loop, em um arquivo separado, se ele escrever dá pra vc utilizar o arquivo....

    falow






Visite: BR-Linux ·  VivaOLinux ·  Dicas-L