命令可以从Shell脚本运行,但不能从命令行运行?

Ang*_*nux 3 linux bash shell scripting command-line

我在发布之前很快搜索了这个,但找不到任何类似的帖子.如果它们存在,请告诉我.


正在执行的命令看起来非常简单.目录列表用作函数的输入.

该目录包含一堆名为"epi1_mcf_0 ###.nii.gz"的文件

命令行版本(bash在执行时运行):

fslmerge -t output_file `ls epi1_mcf_0*.nii.gz`
Run Code Online (Sandbox Code Playgroud)

Shell脚本版本:

#!/bin/bash
fslmerge -t output_file `ls epi1_mcf_0*.nii.gz`
Run Code Online (Sandbox Code Playgroud)

命令行版本失败,但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!
Run Code Online (Sandbox Code Playgroud)

我对这个问题感到非常沮丧(在我发现有一种方法可以使命令工作之后,我不太感到沮丧).

任何帮助,将不胜感激.

(或者是普遍认为应该在"fslmerge"函数中查找问题?)

Joh*_*ica 7

`ls epi1_mcf_0*.nii.gz`写得更简单epi1_mcf_0*.nii.gz.如:

fslmerge -t output_file epi1_mcf_0*.nii.gz
Run Code Online (Sandbox Code Playgroud)

`ls`不添加任何东西.

注意:作为答案而不是评论发布.Markdown-lite注释解析器在我的`` `ls epi1_mcf_0*.nii.gz` ``标记上窒息.

  • @Jefromi - 与分裂IFS相比,颜色实际上是一个小问题; 带有空格,不可打印字符或换行符的文件名是编程使用ls的许多其他问题之一. (2认同)