+ 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: '$3 >= 500 && $3 <= 600 {print $1 " " $3}' /etc/group | while read group gid;
    do
     area[$gid]=$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.    Publicidade


  3. 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

  4. #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


  5.    Publicidade




Usuários que leram este tópico: 0

Nenhum usuário nesta lista
Visite: BR-Linux ·  VivaOLinux ·  Dicas-L