find usage - linha de comando vs script

5

Estou vendo resultados diferentes do comando find entre ser executado manualmente na linha de comando vs executar em um script.

Se eu executar o seguinte na linha de comando:

find . -name '*.txt' ! -name '*20120427.txt' 

Eu obtenho todos os arquivos .txt em um diretório, exceto aqueles com a data que desejo evitar.

Mas quando eu tenho essa mesma linha em um script com uma variável para identificar a data:

FDATE='date +%Y%m%d'
find . -name '*.txt' ! -name '*${FDATE}.txt' 

O script encontra todos os arquivos .txt, incluindo aqueles com a data que eu quero evitar.

A única diferença entre os 2 é que estou passando a variável FDATE no script. Existe algo óbvio que estou perdendo? Eu não entendo porque os resultados estão saindo diferentes.

    
por JeffM 28.04.2012 / 00:24

1 resposta

10

Altere as aspas simples em ' $ {FDATE} .txt' para aspas duplas: " $ {FDATE} .txt"

As shells do Unix / linux / BSD não fazem a substituição de variáveis dentro de literais de strings entre aspas simples, mas farão isso dentro de literais de strings com aspas duplas.

    
por 28.04.2012 / 00:31