在发布之前,我迅速search了这个内容,但找不到任何类似的post。 让我知道他们是否存在。
正在执行的命令看起来非常简单。 目录列表被用作函数的input。
该目录包含一堆名为“epi1_mcf_0 ###。nii.gz”的文件
fslmerge -t output_file `ls epi1_mcf_0*.nii.gz`
Shell脚本版本:
#!/bin/bash fslmerge -t output_file `ls epi1_mcf_0*.nii.gz`
命令行版本失败,但是shell脚本完美地工作。
该错误消息是特定于该function,但它仍然包括在内。
** ERROR (nifti_image_read): failed to find header file for 'epi1_mcf_0000.nii.gz' ** ERROR: nifti_image_open(epi1_mcf_0000.nii.gz): bad header info Error: failed to open file epi1_mcf_0000.nii.gz Cannot open volume epi1_mcf_0000.nii.gz for reading!
我一直对这个问题感到非常沮丧(当我发现有一种方法可以使命令工作时)。
任何帮助,将不胜感激。
(或者普遍认为这个问题应该在“fslmerge”函数中寻找?)
(我首先在评论中提到过这个,但是我帮你解答!
你有没有定义shell别名? (类型alias
)这些会影响在命令行键入的命令,但不会影响脚本。
Linux经常把ls
定义为ls --color
。 这可能会影响输出,因为颜色代码是通过常规输出流作为转义码发送的。 如果使用ls --color=auto
,则会自动检测其输出是否为终端。 从man ls
:
默认情况下,颜色不用于区分文件的类型。 这相当于使用
--color=none
。 没有可选的WHEN参数的情况下使用--color
选项相当于使用--color=always
。 使用--color=auto
,仅当标准输出连接到终端(tty)时才输出颜色代码。
`ls epi1_mcf_0*.nii.gz`
最好写成epi1_mcf_0*.nii.gz
。 如:
fslmerge -t output_file epi1_mcf_0*.nii.gz
`ls`
不添加任何东西。
注意:作为回答发布而不是评论。 Markdown-lite注释解析器在我的`` `ls epi1_mcf_0*.nii.gz` ``
标记上`` `ls epi1_mcf_0*.nii.gz` ``
。