Armazene os resultados de vários comandos em uma posição específica em uma matriz

1

O utilitário parset permite armazenar a saída de comandos em uma variável ou em qualquer matriz. No entanto, eu quero armazenar a saída em índices de matriz específicos.

$ parset arr echo foo {} ::: a b c
$ echo ${arr[0]}
foo a
$ echo ${arr[1]}
foo b
$ echo ${arr[2]}
foo c

Como posso especificar os índices da matriz no comando. Suponhamos que eu queira armazenar os valores em ${arr[4]} , ${arr[5]} , ${arr[6]}

    
por user2650277 04.11.2017 / 10:46

1 resposta

1

Atualize para 20171122 ou faça o seguinte.

A mudança é trivial: basta desabilitar a verificação do nome válido da variável (em env_parallel.bash ):

#    echo "$_parset_name" |                                                        
#       perl -ne 'chomp;for (split /[, ]/) {                                       
#           if(not /^[a-zA-Z_][a-zA-Z_0-9]*$/) {                                   
#                print STDERR "parset: Error: $_ is an invalid variable name.\n";  
#                print STDERR "parset: Error: Variable names must be letter follow\
ed by letters or digits.\n";                                                       
#                $exitval = 255;                                                   
#            }                                                                     
#        }                                                                         
#        exit $exitval;                                                            
#        ' || return 255 

e faça:

. env_parallel.bash
parset 'arr[4],arr[5],arr[6]' echo foo {} ::: a b c
echo ${arr[6]}
    
por 09.11.2017 / 07:10