Arrays 使用数组生成执行循环命令并将列转换为变量
希望每行有三个数组,并捕获所有数组,然后转向变量,我可以使用这些变量在循环中使用这些值执行命令 数组示例“我在这方面不是很好”: 我希望“;”成为循环的某种分隔符不确定是否有可能,以及何时创建循环以生成类似的内容并捕获第一列、第二列和第三列:Arrays 使用数组生成执行循环命令并将列转换为变量,arrays,bash,perl,awk,Arrays,Bash,Perl,Awk,希望每行有三个数组,并捕获所有数组,然后转向变量,我可以使用这些变量在循环中使用这些值执行命令 数组示例“我在这方面不是很好”: 我希望“;”成为循环的某种分隔符不确定是否有可能,以及何时创建循环以生成类似的内容并捕获第一列、第二列和第三列: sqlplus 1col[@]/2col[@]@3col[@] 看起来您想使用数组结构的数组 my @Arr = ( [qw( dba password db1 )], [qw( dba password db2 )],
sqlplus 1col[@]/2col[@]@3col[@]
看起来您想使用数组结构的数组
my @Arr = (
[qw( dba password db1 )],
[qw( dba password db2 )],
[qw( dba password db3 )],
);
# to access first array
print "$Arr[0][0], $Arr[0][1], $Arr[0][2]\n";
您可以在Perl中使用如下哈希数组:
use strict;
use warnings;
my @settings = (
{ dba => 'dba1', pass => 'pass1', db => 'db1' },
{ dba => 'dba2', pass => 'pass2', db => 'db2' },
{ dba => 'dba3', pass => 'pass3', db => 'db3' }
);
for my $set (@settings) {
system("sqlplus", "$set->{'dba'}/$set->{'pass'}\@$set->{'db'}");
}
这将执行
sqlplus dba1/pass1@db1
,然后是sqlplus dba2/pass2@db2
等。使用数组数组。最好使用哈希数组。数组应用于统一数据,散列应用于异构集合。你是在告诉我们你想如何解决问题,而不是你想解决什么问题,因此你得到的答案可能不是实际问题的最佳解决方案。发布一些有代表性的样本输入和预期输出。如何在loop@KalinBorisov对于我的$r(@Arr){print“$r->[0],$r->[1],$r->[2]\n”}
我得到了那个错误:1:line 1:意外标记附近的语法错误
('1:line 1:my@Arr=(“
是$PATH
中的可执行文件吗?该命令应该是什么样子的?该命令应该是:sqlplus dba/password@db
无论如何,我使用oracle用户执行脚本并设置了环境。不幸的是,只有sqlplus命令显示未显示的值。我用“ps”进行了检查我把最后一行改为:我的$set(@settings){system“sqlplus$set->{dba'}/$set->{pass'}\$set->{db'}\n”}
现在对我有用了。@Kalin很高兴你能用上它,我也更新了我的答案来使用系统。
use strict;
use warnings;
my @settings = (
{ dba => 'dba1', pass => 'pass1', db => 'db1' },
{ dba => 'dba2', pass => 'pass2', db => 'db2' },
{ dba => 'dba3', pass => 'pass3', db => 'db3' }
);
for my $set (@settings) {
system("sqlplus", "$set->{'dba'}/$set->{'pass'}\@$set->{'db'}");
}