Ich habe den folgenden Code, um einige Strigns in mehreren Dateien zu ersetzen, aber die for-Schleife sucht nach der ersten Datei und führt das Perl-Skript nicht aus. Unten ist mein Code
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
$(...)
Globbing-Muster um Ihren Dateinamen. Sie brauchen dort keine Befehlsersetzung. Sie können die vier Perl-Aufrufe aus Geschwindigkeitsgründen auch zu einem einzigen kombinieren.Antworten:
Das
$(foo)
Konstrukt führt den Befehl ausfoo
und ersetzt ihn$(foo)
durch die Ausgabe von runningfoo
. Du willst einen Glob, das ist kein Befehl. Sie versuchen, alle aufgerufenen Dateien auszuführen./zebu.work.post_opt/ZEBU_CTO_FT_MOD*
. Alles was Sie brauchen ist:Oder einfacher:
Oder noch einfacher:
quelle
perl -ip
an mehreren Dateien gleichzeitig arbeiten? Ich habe taht noch nie getestet.