关于问题的两个问题,我正在编写一个使用变量的BASH脚本。我无法用我的生命来解决这件事,而且它正在折磨我。
1)我有以下代码。
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错误开头的代码行如下:
FATAL ERROR: Can't open dataset 'RSFC_LFF_rall_+orig'我已经尝试声明${subj}变量,例如,五种不同的方法(包括使用head、tail、cut和colons),但我仍然得到了这个错误。我做错了什么?
2)在试图以多种方式定义${subj}时,我还尝试了以下方法:
${subj}= ${subject:0:8}当我这样做时,最后一个括号拒绝关闭--即结束括号没有改变开始括号的颜色,而且当我试图运行脚本时,在该行中出现了一个错误,上面写着‘命令不找到’。我根据下面的例子检查了我的语法,它看起来很好吗?我是不是漏掉了什么?
发布于 2014-09-17 21:45:29
试试这个:
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。见壳体-参数-膨胀。
https://stackoverflow.com/questions/25900732
复制相似问题