我在发帖之前很快搜索到了这个,但是找不到任何类似的帖子。让我知道他们是否存在。命令从Shell脚本工作,但不是从命令行?
正在执行的命令看起来很简单。目录列表被用作函数的输入。
该目录包含了一堆命名文件的
命令行版本(这是执行时的bash运行) “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脚本完美工作。
该错误消息是特定于该功能的,但无论如何它都包含在内。
** 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别名?(类型'别名')这些会影响命令行输入的命令,但不会影响脚本。 – 2010-11-17 01:46:58
解决了这个问题......'ls'被定义为'ls --color'。我很好奇 - 为什么这会有所作为?当使用颜色版本时,ls的原始输出是不同的? (谢谢!) – 2010-11-17 01:55:32
使用转义码生成颜色,这是由终端程序解释的额外字符序列,但您通常不想传递给其他程序。 – 2010-11-17 01:59:26