Criando um arquivo vazio com um nome de variável em um script

3

Eu preciso criar um arquivo vazio usando um script de shell. O nome do arquivo será determinado examinando todos os arquivos em um diretório correspondente a um padrão, digamos TEST.* , e anexando _END a ele para que o novo arquivo possa parecer com TEST.2011_END . Deixe o diretório atual ser $DIR . Então eu tentei:

for file in $DIR/TEST.*
do
    touch $file_END  
done

Isso dá um erro. Eu também tentei substituir touch $file_END por:

filename=$file_END  
touch $filename  

mas sem sorte. O que devo fazer?

    
por Abhishek Anand 01.04.2011 / 13:47

2 respostas

10

A sintaxe seria:

filename="${file}_END"

ou no seu código

touch "${file}_END"

As citações de " não são necessárias, desde que $file não tenha nenhum espaço em branco ou caractere globbing.

    
por 01.04.2011 / 14:03
1

o interpretador de comandos acha que você quer dizer $ file_END (valor da variável chamada file_END). você pode contornar isso citando. A sintaxe poderia ser:

filename="$file""_END"

ou

filename="$file"_END

ou até mesmo

filename=$file"_END"

embora eu prefira o primeiro para maior clareza!

    
por 01.04.2011 / 14:11