Tengo el siguiente código para reemplazar algunas cadenas en varios archivos, pero el bucle for está buscando el primer archivo y no está ejecutando el script perl. a continuación está mi 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
$(...)
patrón de globo alrededor de su nombre de archivo. No necesita una sustitución de comando allí. También puede combinar las cuatro invocaciones de Perl en una sola para obtener velocidad.Respuestas:
La
$(foo)
construcción ejecutará el comandofoo
y lo reemplazará$(foo)
con la salida de ejecuciónfoo
. Quieres un pegote, eso no es un comando. Lo que estás haciendo es intentar ejecutar todos los archivos llamados./zebu.work.post_opt/ZEBU_CTO_FT_MOD*
. Todo lo que necesitas es:O, más simplemente:
O incluso más simplemente:
fuente
perl -ip
trabajar en varios archivos a la vez? Nunca he probado taht.