2017-01-17 12 views
0

プログラムの複数のインスタンスを開くために配列を繰り返し処理する際に問題があります。私は、次の例を実行すると、私はfslviewの3つのインスタンスを取得:バックグラウンドで実行されるmacシェルスクリプトループが無視される

arr=(bold_rs_fabio_precuneus_mask.nii.gz mask.nii.gz 
bold_rs_fabio.nii.gz) 
for f in $arr 
do 
    fslview $f & 
done 

私は2番目に何をしないのです。この例では

arr=(bold_rs_fabio_precuneus_mask.nii.gz mask.nii.gz bold_rs_fabio.nii.gz) 
fslview ${arr[0]} & 
fslview ${arr[1]} & 
fslview ${arr[2]} & 

を私は最初のファイルだけロードされてfslviewのインスタンスを取得例?事前 で

おかげマーティン

答えて

0

たぶん、あなたは、ループ内で新しいシェルを起動する必要があります

arr=(bold_rs_fabio_precuneus_mask.nii.gz mask.nii.gz bold_rs_fabio.nii.gz) 
for f in $arr 
do 
    (fslview $f &) 
done 

それとも実際に並列

arr=(bold_rs_fabio_precuneus_mask.nii.gz mask.nii.gz bold_rs_fabio.nii.gz) 
cmd="" 
for f in $arr 
do 
    cmd="$cmd fslview $f &" 
done 
#then let it run 
$cmd 
でプロセスを実行するコマンドラインを構築しよう

希望すると助かります

+0

私はなぜそれが違いになるのか興味をそそられていますあなたはどうか説明してくれませんか? –

+0

'&'は特定のシェルのコマンドラインに当てはまると思います...私はOSXでどのように動作するかは完全にはわかりません。ただ助けようとしています。 –

+0

こんにちは、あなたのアイデアに感謝します。しかし、変更を加えなかった。私はこのスクリプトをmac automatorアプリで使用しています。おそらく誰かが回避策を知っているでしょうか? – gimba

関連する問題