【问题标题】:Function works properly with relative path input but NOT with absolute path input函数适用于相对路径输入,但不适用于绝对路径输入
【发布时间】:2011-06-08 01:28:44
【问题描述】:

存在一个作为软件包 (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 中做错了什么,还是因为函数实际上有错误。

但是,任何意见都是值得赞赏的。

在更一般的层面上,我正在寻找任何可预见的原因,说明为什么函数能够使用相对文件夹路径而不是绝对路径(前提是它们解析到相同的位置)。

编辑:密码给出: /net/user1/project_name/Data/2011_01_10_SVD1/3_fMRI_rest

【问题讨论】:

  • 闻起来像虫子。我会向程序的作者投诉。
  • 这是否发生在新打开的外壳中?如果重命名目标,使用旧名称创建一个新目录并使用目标的原始参数,它仍然会发生吗?
  • 你能更新一下'pwd'位置吗?这将有助于更好地理解这个问题。

标签: linux bash path relative-path absolute-path


【解决方案1】:

您确实必须向我们展示代码,然后我们才能告诉您问题的原因是什么,但是您描述的行为是可能的

这是一个不良做法的例子,但请考虑以下情况

#!/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

【讨论】:

    【解决方案2】:

    这似乎是某种错误。我遇到了同样的问题。如果我尝试对我的主文件夹中的数据执行此命令,我会收到同样的错误。

    但是,如果我将数据移动到不涉及任何扩展的路径,即 ''/tmp/data'',则程序可以正常执行。

    【讨论】:

      猜你喜欢
      • 2011-07-12
      • 2010-10-28
      • 2012-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多