Eu tenho o código abaixo para substituir algumas strigns em vários arquivos, mas o loop for está verificando o primeiro arquivo e não executando o script perl. abaixo está o meu código
if [ -f zebu.work.post_opt/ZEBU_CTO_FT_MOD.v ]
then
for file in $(./zebu.work.post_opt/ZEBU_CTO_FT_MOD*);
do
perl -i -p -e 's/input/inout/g' $file;
perl -i -p -e 's/output/inout/g' $file;
perl -i -p -e 's/wire.*\n/tran\(i0,\ o\);/g' $file;
perl -i -p -e 's/assign.*\n//g' $file;
done
fi
$(...)
padrão globbing do seu nome de arquivo. Você não precisa de uma substituição de comando lá. Você também pode combinar as quatro invocações Perl em uma única para obter velocidade.Respostas:
A
$(foo)
construção executará o comandofoo
e será substituída$(foo)
pela saída de execuçãofoo
. Você quer um globo, isso não é um comando. O que você está fazendo é tentar executar todos os arquivos chamados./zebu.work.post_opt/ZEBU_CTO_FT_MOD*
. Tudo o que você precisa é:Ou, mais simplesmente:
Ou ainda mais simplesmente:
fonte
perl -ip
trabalhar em vários arquivos ao mesmo tempo? Eu nunca testei isso.