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