GNU 병렬의 bash 배열 printf

GNU 병렬의 bash 배열 printf

두 요소가 포함된 bash 배열 변수를 GNU 병렬 스크립트에 전달하려고 합니다.

echo ${opts[@]}                                                                                                                                                    
-s 100206 -i /input/100206/unprocessed/3T/T1w_MPR1/100206_3T_T1w_MPR1.nii.gz -s 100408 -i /input/100408/unprocessed/3T/T1w_MPR1/100408_3T_T1w_MPR1.nii.gz 

이렇게 실행하려고 합니다

printf '%s\n' "${opts[@]}" | parallel --jobs 8 --timeout 250% --progress recon-all {.} -all -qcache

내가 printf잘못 사용하고있는 것 같습니다 :

printf '%s\n' "${opts[@]}"                                                                                                                                         
-s                                                                                                                                                                                         
100206                                                                                                                                                                                     
-i                                                                                                                                                                                         
/input/100206/unprocessed/3T/T1w_MPR1/100206_3T_T1w_MPR1.nii.gz                                                                                                                            
-s                                                                                                                                                                                         
100408                                                                                                                                                                                     
-i                                                                                                                                                                                         
/input/100408/unprocessed/3T/T1w_MPR1/100408_3T_T1w_MPR1.nii.gz

답변1

각 명령에는 4개의 레코드가 필요하다고 생각합니다.

printf '%s\n' "${opts[@]}" |
  parallel --jobs 8 -n4 --timeout 250% --progress recon-all {.} -all -qcache

관련 정보