GNU/Linux >> Belajar Linux >  >> Linux

Sejajarkan Bash Untuk Loop?

Saya telah mencoba memparalelkan skrip berikut, khususnya masing-masing dari tiga instance loop FOR, menggunakan GNU Parallel tetapi belum bisa. 4 perintah yang terdapat dalam loop FOR dijalankan secara seri, setiap loop memakan waktu sekitar 10 menit.

#!/bin/bash

kar='KAR5'
runList='run2 run3 run4'
mkdir normFunc
for run in $runList
do 
  fsl5.0-flirt -in $kar"deformed.nii.gz" -ref normtemp.nii.gz -omat $run".norm1.mat" -bins 256 -cost corratio -searchrx -90 90 -searchry -90 90 -searchrz -90 90 -dof 12 
  fsl5.0-flirt -in $run".poststats.nii.gz" -ref $kar"deformed.nii.gz" -omat $run".norm2.mat" -bins 256 -cost corratio -searchrx -90 90 -searchry -90 90 -searchrz -90 90 -dof 12 
  fsl5.0-convert_xfm -concat $run".norm1.mat" -omat $run".norm.mat" $run".norm2.mat"
  fsl5.0-flirt -in $run".poststats.nii.gz" -ref normtemp.nii.gz -out $PWD/normFunc/$run".norm.nii.gz" -applyxfm -init $run".norm.mat" -interp trilinear

  rm -f *.mat
done

Jawaban yang Diterima:

Mengapa Anda tidak memotong (alias latar belakang) saja?

foo () {
    local run=$1
    fsl5.0-flirt -in $kar"deformed.nii.gz" -ref normtemp.nii.gz -omat $run".norm1.mat" -bins 256 -cost corratio -searchrx -90 90 -searchry -90 90 -searchrz -90 90 -dof 12 
    fsl5.0-flirt -in $run".poststats.nii.gz" -ref $kar"deformed.nii.gz" -omat $run".norm2.mat" -bins 256 -cost corratio -searchrx -90 90 -searchry -90 90 -searchrz -90 90 -dof 12 
    fsl5.0-convert_xfm -concat $run".norm1.mat" -omat $run".norm.mat" $run".norm2.mat"
    fsl5.0-flirt -in $run".poststats.nii.gz" -ref normtemp.nii.gz -out $PWD/normFunc/$run".norm.nii.gz" -applyxfm -init $run".norm.mat" -interp trilinear
}

for run in $runList; do foo "$run" & done

Jika tidak jelas, bagian penting ada di sini:

for run in $runList; do foo "$run" & done
                                   ^

Menyebabkan fungsi dieksekusi di shell bercabang di latar belakang. Itu paralel.


Linux
  1. Cara menulis loop di Bash

  2. Panduan Bash For Loop dan Contohnya

  3. Contoh Bash For Loop dan While Loop

  1. Menjaga Anda di Loop – Contoh Bash Untuk, Sementara, Sampai Loop

  2. Contoh Bash untuk loop

  3. Pesta Linux. untuk loop dan fungsi, untuk menambahkan angka

  1. Skrip Linux:3 cara untuk while loop di Bash

  2. 12 Contoh Bash For Loop untuk Scripting Shell Linux Anda

  3. Bersarang untuk loop