2011-01-12 21 views
2

ソフトウェアパッケージ(MRICro)の一部であり、「dcm2nii」と呼ばれる機能があります。機能は相対パス入力では正常に動作しますが、絶対パス入力では機能しません

相対パスを出力ディレクトリとして使用すると、この関数は正常に動作します。

ただし、完全に同じフォルダへの絶対パスが使用されている場合、関数は機能しなくなります。

例(絶対パス):

dcm2nii -o /net/user1/project_name/Data/2011_01_10_SVD1/Processed/3_fMRI_rest E2538S3I00* 

例(相対パス):出力フォルダの絶対パスを使用する場合に発生

dcm2nii -o ../Processed/3_fMRI_rest E2538S3I00* 

サンプルエラーメッセージ(最後の行はことを示唆しています出力ファイルを作成できません)。

Validating 52 potential DICOM images. 
Found 52 DICOM images. 
Converting 52/52 2 
E2538S3I0001.MR.dcm->20110110_112950E2538S3I0001MRFPSD1F29OCT2010RCs003a1001.nii 
GZip 20110110_112950E2538S3I0001MRFPSD1F29OCT2010RCs003a1001.nii 
unable to create /net/user1/project_name/Data/2011_01_10_SVD1/Processed/3_fMRI_rest/20110110_112950E2538S3I0001MRFPSD1F29OCT2010RCs003a1001.nii.gz 

この問題があるかどうかわかりません。 Linux/bashで何か間違ったことをしたり、実際に間違いを犯していることが原因です。

しかし、どんな入力も感謝しています。

より一般的なレベルでは、関数が絶対パスではなく相対パスを使用できる理由の予測可能な理由を探しています(同じ場所に解決される場合)。

EDIT:PWDが与える: /ネット/ USER1/PROJECT_NAME /データ/ 2011_01_10_SVD1/3_fMRI_rest

+1

匂いがバグです。私はプログラムの著者に不平を言うでしょう。 –

+0

これは新しく開いたシェルで起こりますか?宛先の名前を変更する場合は、古い名前の新しいディレクトリを作成し、宛先の元の引数を使用しますが、それはまだ発生しますか? –

+0

'pwd'の場所で更新できますか? これは、質問をよりよく理解するのに役立ちます。 – TheCottonSilk

答えて

0

我々は問題の原因が何であるかを伝えることができます前に、あなたは本当に私たちのコードを表示しなければならない、しかし、あなたが説明した動作はこれが悪い習慣の一例である

可能ですが、これはいくつかの種類のバグに表示される次の

#!/bin/bash 
.... 
current_dir = $(pwd) 
out_dir = $1 
cd ${somewhere} 
..... do stuff 
#no we want to come back to create the output dir 
mkdir ${current_dir}/$out_dir 
0

を考える..私は同じ問題を経験しています。ホームフォルダ内のデータに対してこのコマンドを実行しようとすると、同じエラーが発生します。

しかし、展開に関係のないパス、つまり '/ tmp/data' 'にデータを移動すると、プログラムは正常に実行されます。

関連する問題