이 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]}