Variáveis Bash mudam quando dentro de citações

1

Estou tentando pegar o primeiro arquivo que corresponde a um padrão e usá-lo em uma instrução. Usando as mesmas etapas encontradas em Como Eu recebo o primeiro jogo da expansão de curinga? Eu escrevi o seguinte:

#!/bin/bash
files=("*.sql")
firstfile=${files[0]}
echo $firstfile
echo "The first file is $firstfile"

Quando eu executo isso, a saída é:

sqlfile.sql

The first file is *.sql

Por que o valor de $firstfile é alterado com base no contexto?

    
por jloosli 09.10.2015 / 21:38

2 respostas

2

Pegue as aspas na linha de arquivos, que sai:

#!/bin/bash
files=(*.sql)
firstfile=${files[0]}
echo $firstfile
echo "The first file is $firstfile"
    
por 09.10.2015 / 21:45
3

A última linha imprime o que realmente está em $ firstfile.

O primeiro eco expande $ firstfile através do sistema de arquivos, já que você não usou aspas duplas.

    
por 09.10.2015 / 21:45