여러 명령의 결과를 배열의 특정 위치에 저장

여러 명령의 결과를 배열의 특정 위치에 저장

parset유틸리티를 사용하면 명령의 출력을 변수나 배열에 저장할 수 있습니다. 하지만 출력을 특정 배열 인덱스에 저장하고 싶습니다.

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

명령에서 배열 인덱스를 어떻게 지정합니까? ${arr[4]}, ${arr[5]}, 에 값을 저장하고 싶다고 가정해 보겠습니다 .${arr[6]}

답변1

20171122로 업그레이드하거나 다음 작업을 수행하세요.

변경 사항은 간단합니다. 유효한 변수 이름 확인을 비활성화하면 됩니다(in 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 

그리고 다음을 수행하십시오:

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

관련 정보