Bash - ler linha do arquivo

1

Eu tenho um arquivo de uma linha com um valor armazenado como uma string:

server-name-2009-August-9-AMI

O nome do arquivo é server_name . Qual é a maneira mais curta e elegante de colocar este valor em uma variável com o script bash?

    
por Adam Matan 09.08.2009 / 16:32

2 respostas

8

Você pode fazer um "uso útil do gato";)

VAR = $(cat $(dirname $0)/server_name)

Isso colocará o conteúdo do arquivo "server_name", localizado no mesmo diretório do seu script, em $ VAR. Funciona independentemente de onde você executa o script.

    
por 09.08.2009 / 17:42
13

Você pode usar o comando read . Se você não fornecer nenhuma variável, a linha será salva automaticamente na variável REPLY no Bash. Se você fornecer uma variável única, a linha será salva nessa variável. Se você fornecer múltiplas variáveis, o Bash dividirá a linha como palavras (a divisão é feita no espaço em branco), tentando colocar uma palavra em cada variável. (Se houver mais palavras que variáveis, cada variável recebe uma palavra, mas a última recebe o resto da linha.)

Exemplo:

telemachus ~ $ read < buff
telemachus ~ $ echo $REPLY
#!/usr/bin/env perl
telemachus ~ $ read LINE < buff
telemachus ~ $ echo $LINE
#!/usr/bin/env perl

Observe que a variável é atribuída sem um cifrão ( REPLY ou LINE ), mas quando você a usa, você precisa de $REPLY ou $LINE .

Então você gostaria de algo assim:

read SERVER < /path/to/server_name

Eu recomendo que você use o caminho completo do arquivo que deseja ler, em vez de assumir que os dois scripts estarão no mesmo diretório.

Eu não vou jurar que essa é a solução mais elegante.

    
por 09.08.2009 / 16:51

Tags