複数のファイルの一部の文字列を置き換える以下のコードがありますが、forループは最初のファイルをチェックし、Perlスクリプトを実行していません。以下は私のコードです
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
$(foo)
構文は、コマンドfoo
を実行し、$(foo)
を実行中のfoo
の出力に置き換えます。コマンドではないグロブが必要です。あなたがやっていることは、./zebu.work.post_opt/ZEBU_CTO_FT_MOD*
と呼ばれるすべてのファイルを実行しようとしていることです。あなたに必要なのは:
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
または、もっと簡単に:
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; s/output/inout/g;
s/wire.*\n/tran\(i0,\ o\);/g;
s/assign.*\n//g' "$file"
done
fi
またはさらに簡単に:
if [ -f zebu.work.post_opt/ZEBU_CTO_FT_MOD.v ]
then
Perl -i -p -e 's/input/inout/g; s/output/inout/g;
s/wire.*\n/tran\(i0,\ o\);/g;
s/assign.*\n//g' ./zebu.work.post_opt/ZEBU_CTO_FT_MOD*
fi