Bash atribuição de variável usando outra variável como parte

6

Eu tenho o seguinte trecho de um script bash usado para fazer backup de um banco de dados

#!/bin/bash
DB=database_name
DBUSER=username
FILENAME=$DB_$(date +%s).sql

Estou tentando reutilizar o valor de DB na atribuição da variável FILENAME , mas isso não me permitirá usar a substituição dessa maneira. Acabei de receber o timestamp para o nome do arquivo.

É possível conseguir o que eu quero e, em caso afirmativo, qual é a sintaxe?

obrigado.

    
por LukeR 08.09.2011 / 05:58

3 respostas

8

O problema é que bash não sabe que você quer dizer $DB em vez de $DB_ (que é um nome perfeitamente válido para uma variável).

A melhor opção é ser explícito no nome da variável usando chaves em torno de seu nome:

FILENAME=${DB}_$(date %s).sql

Isso evita o trabalho de escapar de outros caracteres que não devem ser interpretados como parte de um nome de variável.

    
por 08.09.2011 / 06:16
4

Como alternativa, use chaves para isolar sua variável. Eu acho que é um pouco mais claro do que colocar citações lá.

FILENAME=${DB}_$(date +%s).sql
    
por 08.09.2011 / 06:13
2

Coloque o sublinhado entre aspas duplas (ou aspas simples para o mais strong):

#!/bin/bash
DB=database_name
DBUSER=username
FILENAME=$DB"_"$(date +%s).sql
    
por 08.09.2011 / 06:02