因此,我试图通过一个较大的主题目录进行代码循环,并为每个对应的主题转到同一文件夹:
/projectnb/fastfmri/nfultz/HCP/"$(basename $file)/func"
basename文件系统已经使用类似的脚本为我工作,但是由于某种原因,该脚本要求我位于func文件夹中才能运行它,这对于运行大型主题目录非常不便。以下是我一直在运行的脚本。每当我运行此程序时,除非我位于
的文件夹中,否则它将不起作用#!/bin/bash -l
#$ -P fastfmri
#$ -pe omp 12
#$ -N ninaStcfsl
module load fsl/5.0
module load freesurfer/6.0
export SMSFACT=8
export SUBJECT_DATA_DIR=/projectnb/fastfmri/nfultz/HCP/*
for file in $SUBJECT_DATA_DIR; do if [[ "${file}" == *"HCA"* ]]
then echo "${file}"
export SUBJECTS_DIR=/projectnb/fastfmri/nfultz/HCP/"$(basename $file)"
export SUBJECTS_DIR=/projectnb/fastfmri/nfultz/HCP/"$(basename $file)"
export STCFSL_DIR=/projectnb/fastfmri/nfultz/HCP/"$(basename $file)"/stcfsl
#mkdir $STCFSL_DIR
echo $STCFSL_DIR
#alias subdir="cd $SUBJECTS_DIR/func"
#echo $SUBJECTS_DIR/func
#-wd $SUBJECTS_DIR/func
export CODE_DIR=/projectnb/fastfmri/nfultz/scripts
echo $CODE_DIR
#subdir
#bash $CODE_DIR/sliceTimeCorrect.sh
for filename in $SUBJECTS_DIR/func/*.nii.gz; do
fNameMinusPath="${filename##*/}" # crop path
fNameMinusExt=`$FSLDIR/bin/remove_ext ${fNameMinusPath}` # crop ext
echo $fNameMinusExt #output filename
# /projectnb/fastfmri/nfultz/scripts/sms_slicetime_correct.sh $SMSFACT $filename $STCFSL_DIR/${fNameMinusExt}_stc.nii & #slice time correct
$CODE_DIR/sms_slicetime_correct.sh $SMSFACT $fNameMinusPath ${fNameMinusExt}_stc.nii & #slice time correct
done
fi
done
我一直在解决的方法是将所有func运行都移动到一个文件夹中,然后运行脚本,但这非常不方便且缓慢。我已经从几个同事那里得到了反弹,但是我们还没有找到解决方案。