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
Linux 在bash中访问Perl数组_Linux_Bash_Perl - Fatal编程技术网

Linux 在bash中访问Perl数组

Linux 在bash中访问Perl数组,linux,bash,perl,Linux,Bash,Perl,我有一个perl代码,其中我使用backticks执行一些bash命令。我想在bash命令中读取一个perl数组。我的数组有一些字符串,我想在bash的for循环中读取它们 my @aArray = (1,2,3,4); my $command = 'for i in $@aArray; do xxxxx $i; done;'; `$command` 我还希望在循环的任何部分失败时捕获错误。谢谢正如@chepner所建议的,您想要的代码看起来有点像这样: my @array = (1, 2,

我有一个perl代码,其中我使用backticks执行一些bash命令。我想在bash命令中读取一个perl数组。我的数组有一些字符串,我想在bash的for循环中读取它们

my @aArray = (1,2,3,4);
my $command = 'for i in $@aArray; do xxxxx $i; done;';
`$command`

我还希望在循环的任何部分失败时捕获错误。谢谢

正如@chepner所建议的,您想要的代码看起来有点像这样:

my @array = (1, 2, 3, 4);
for my $val (@array) {
    # Pick your favourite/the most appropriate mechanism for making system calls
    system("command", $val);
}
my @array = (1, 2, 3, 4);
my $command = "for i in ("

for my $val(@array) {
    $val =~ s/(?<!\\) /\\ /g; # Escape spaces that haven't already been (if the array elements might contain them)
    $command = "$command $val";
}

$command = $command."); do <command> $i; done;";

system($command);
如果您需要在远程系统上进行一次呼叫,您可以执行以下操作:

my @array = (1, 2, 3, 4);
for my $val (@array) {
    # Pick your favourite/the most appropriate mechanism for making system calls
    system("command", $val);
}
my @array = (1, 2, 3, 4);
my $command = "for i in ("

for my $val(@array) {
    $val =~ s/(?<!\\) /\\ /g; # Escape spaces that haven't already been (if the array elements might contain them)
    $command = "$command $val";
}

$command = $command."); do <command> $i; done;";

system($command);
my@array=(1,2,3,4);
我的$command=“用于输入(”
对于我的$val(@array){

$val=~s/(?$@aArray是一个打字错误。)我只想键入@aArray。请看,我建议对我的$i(@array){
xxxxx$i
;}
,在Perl中循环:
。我不认为这是这些问题(或答案)的重复@lmran最好将您的问题编辑为将
$@aArray
修改为
@aArray
,而不是将其作为注释。此外,该问题获得一些否决票的一个可能原因是您没有给出错误输出。值得在编辑中添加该问题,并提供您可以提供的任何进一步详细信息。如果您让它正常工作,您可以一个(甚至应该)发布它作为您自己问题的答案。这正是我现在拥有它的方式。我只是在远程主机上执行此系统命令,因此打开每个循环的连接需要花费大量时间。这就是我希望整个for循环只在一个连接的远程主机上执行的原因。我添加了一个版本,它构建了一个完整的备份
bash
来自初始数组的命令。谢谢,这样就可以了!@lmran IMO,在远程主机上执行是一个重要的信息,它将大大增强您的问题