首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BASH shell脚本中的错误-使用变量作为引用

BASH shell脚本中的错误-使用变量作为引用
EN

Stack Overflow用户
提问于 2014-09-17 21:35:54
回答 1查看 130关注 0票数 0

关于问题的两个问题,我正在编写一个使用变量的BASH脚本。我无法用我的生命来解决这件事,而且它正在折磨我。

1)我有以下代码。

代码语言:javascript
复制
pdir=/media/The_Enforcer/ICA_Doug/Participants/RS1
cd ${pdir}

for subject in * ; do
    subdir=${pdir}/${subject} ;
    cd ${subdir} ;
    subj= echo ${subject} | head -c-9
    3dAFNItoNIFTI -prefix ICA/cleanRS_NII_${subj} RSFC_LFF_rall_${subj}+orig ;
    cd ${pdir} ;
done

${ subject }是一个主题ID,是########.results。例如: 1R101U1A.results。基本上,我的代码cd将我输入到一个名为RSFC_LFF_rall_1R101U1A+orig的目录中,我希望通过以3 3dAFNItoNIFTI开头的代码行来处理该文件。显然,我不能在该代码行中使用${subject}变量,因为它将尝试查找不存在的文件RSFC_LFF_rall_1R101U1A.results+orig。因此,为了解决这个问题,我创建了一个名为${subj}的新变量,通过回显管道,它基本上切断了${subject}的最后9个字母,后者实际上删除了.results。当我这样做并回显${subj}时,它会给我1R101U1A,这正是我想要的。

但是,以3 3dAFNItoNIFTI错误开头的代码行如下:

代码语言:javascript
复制
FATAL ERROR: Can't open dataset 'RSFC_LFF_rall_+orig'

我已经尝试声明${subj}变量,例如,五种不同的方法(包括使用head、tail、cut和colons),但我仍然得到了这个错误。我做错了什么?

2)在试图以多种方式定义${subj}时,我还尝试了以下方法:

代码语言:javascript
复制
${subj}= ${subject:0:8}

当我这样做时,最后一个括号拒绝关闭--即结束括号没有改变开始括号的颜色,而且当我试图运行脚本时,在该行中出现了一个错误,上面写着‘命令不找到’。我根据下面的例子检查了我的语法,它看起来很好吗?我是不是漏掉了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-17 21:45:29

试试这个:

代码语言:javascript
复制
cd "/media/The_Enforcer/ICA_Doug/Participants/RS1"

for subject in * ; do
    cd $subject
    subj=${subject%.results}
    3dAFNItoNIFTI -prefix ICA/cleanRS_NII_${subj} RSFC_LFF_rall_${subj}+orig
    cd ..
done

${subject%.results}从字符串末尾删除.results。见壳体-参数-膨胀

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25900732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档