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.
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?
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!
Tags files shell-script quoting