Pegue as aspas na linha de arquivos, que sai:
#!/bin/bash
files=(*.sql)
firstfile=${files[0]}
echo $firstfile
echo "The first file is $firstfile"
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?
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.
Tags bash shell-script quoting