我正在尝试运行一个bash脚本,用于使用
AFNI's 3dcalc
.
该函数的参数之一是“expr”,它将“将表达式(引号内)应用于输入数据集(dnames),一次一个体素,以生成输出数据集”。在尝试启动此作业时,我遇到了如下语法错误:
-bash: -c: line 0: syntax error near unexpected token `('
-bash: -c: line 0: `apptainer run --cleanenv /Users/user44/fMRI/my_images/afni-binaries.sif 3dcalc -a /Users/user44/fMRI/PPMI/derivatives/afni_blur/sub-3102/sub-3102+tlrc.BRIK -b /Users/user44/fMRI/PPMI/derivatives/afni_scale/sub-3102/sub-3102_desc-scalestats+tlrc.BRIK -c /Users/user44/fMRI/PPMI/derivatives/fmriprep/sub-3102/func/sub-3102_task-rest_space-MNI152NLin2009cAsym_desc-preproc_bold.nii.gz -expr c*min(200,a/b*100)*step(a)*step(b) -prefix /Users/user44/fMRI/PPMI/derivatives/afni_scale/sub-3102/sub-3102_task-rest_space-MNI152NLin2009cAsym_desc-preprocScaled_bold.nii '
我的bash脚本附在这里:
#!/bin/bash
for fn in /Users/user44/fMRI/PPMI/derivatives/fmriprep/sub*/; do
id=$(echo $fn | cut -d '/' -f 8)
qsub -b y -q $QUEUE_NAME -pe orte 8 -l h_vmem=8G -N $id apptainer run --cleanenv ~/fMRI/my_images/afni-binaries.sif 3dcalc \
-a ~/fMRI/PPMI/derivatives/afni_blur/${id}/${id}+tlrc.BRIK \
-b ~/fMRI/PPMI/derivatives/afni_scale/${id}/${id}_desc-scalestats+tlrc.BRIK \
-c ~/fMRI/PPMI/derivatives/fmriprep/${id}/func/${id}_task-rest_space-MNI152NLin2009cAsym_desc-preproc_bold.nii.gz \
-expr "c*min(200,a/b*100)*step(a)*step(b)" \
-prefix ~/fMRI/PPMI/derivatives/afni_scale/${id}/${id}_task-rest_space-MNI152NLin2009cAsym_desc-preprocScaled_bold.nii
break
done
我曾尝试用各种其他语法表示法替换引用的表达式,但我的bash经验有点欠缺,我还没能弄清楚问题是什么。尝试的解决方案包括:
-expr "'c*min(200,a/b*100)*step(a)*step(b)'" \
-expr "\'c*min(200,a/b*100)*step(a)*step(b)\'" \
-expr "$('c*min(200,a/b*100)*step(a)*step(b)')" \
我确信我违反了一个非常简单的语法规则,但如果您能帮助我识别所述违规行为,我将不胜感激!