Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 使用数组生成执行循环命令并将列转换为变量_Arrays_Bash_Perl_Awk - Fatal编程技术网

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'}");
}