Функция работает правильно с вводом относительного пути, но НЕ с вводом абсолютного пути
Существует функция, которая является частью программного пакета (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, или из-за того, что функция действительно имеет ошибку
Но любой вклад приветствуется.
На более общем уровне я ищу любую предсказуемую причину, по которой функция могла бы использовать относительный путь к папке, а не абсолютный (при условии, что они разрешаются в одном и том же месте).
РЕДАКТИРОВАТЬ: pwd дает: /net/user1/ имя_проекта /Data/2011_01_10_SVD1/3_fMRI_rest
2 ответа
Вам действительно нужно показать нам код, прежде чем мы расскажем вам, в чем причина проблемы, однако описанное вами поведение возможно
Это пример плохой практики, но рассмотрим следующее
#!/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
Кажется, это какая-то ошибка.. У меня возникла та же проблема. Если я пытаюсь выполнить эту команду для данных в моей домашней папке, я получаю ту же ошибку.
Тем не менее, если я перенесу свои данные в путь, который не требует какого-либо расширения, например, '/tmp/data', программа будет работать нормально.