GNUパラレルのbash配列printf

GNUパラレルのbash配列printf

2つの要素を含む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

関連情報