我需要在每个文件中进行更改。我将使用的命令是: perl -pi -e's / v8 / v9 / g'#replace v8 with v9 for each files
我获得了一个工具,该工具已经创建了需要更改的文件列表。我的脚本需要进行更改然后返回到原始脚本,该脚本将重新运行校验和并将新校验和插入数据库。
update_xml.pl -d'dataType'-''myscript'
我似乎无法获取'update_xml.pl -d'创建的文件列表成为myscript的输入。 另外,我如何结束脚本以确保初始脚本(update_xml.pl)完成?
我不是程序员,所以非常感谢所有帮助。
答案 0 :(得分:0)
听起来您正在尝试使用重定向/管道来处理流量控制。这将无法执行您希望它执行的操作,因为子脚本无法将其完成传回给父级,从而允许父级继续执行更新过程的下一步。我建议您修改update_xml.pl以执行以下步骤:
因此,如果我正确理解您的问题,您应该将第2步注入现有的update_xml.pl脚本中。您可以使用以下代码完成此操作,假设每个文件的完整路径位于“@files”数组中的元素中:
for my $file(@files) {
my $cmd = "/path/to/perl -pi -e 's/v8/v9/g' $file";
system($cmd);
}
如果要使用单独的脚本并在命令行中指定它,请使用Getopt::Long:
use Getopt::Long;
my $modify_script;
GetOptions('-s=s' => \$modify_script);
...
if(-x $modify_script) {
for my $file(@files) {
my $cmd = "$modify_script $file";
system($cmd)
}
}