需要检查跑的数据跑好了没有,HCP 的7个步骤,看看subject分别完成到什么程度了,因为全开的并行,需要整理一下,所以需要用到动态变量名
#1.check-1:PreFreeSurfer
for out_file in $(ls -lt | awk '$5==0 && /PreFreeSurfer/{print $9}' | sed 's/.sh.e/.sh.o/g')
do
subject=$(cat ${out_file} | grep -Eo "Subject:.*" |awk -F ':' '{print $2}' | sed 's/ //g')
state=$(cat ${out_file} | grep -Eo "Completed!")
#下面就是动态给变量赋值了,使用eval,注意输出的时候也要加eval,变量名引用的$符号拼接在前面,echo 出变量名之后,eval就是变量的值了!
if [ -n "$state" ];then
eval p_${subject}='$state'
else
#字符串先赋值给变量名,再用eval将这个变量代表的字符串赋值给动态变量
#'字符串'(用单引号括起来)
#'$变量名'(也用单引号括起来)
state='running'
eval p_${subject}='$state'
fi
eval echo '$'p_${subject}
done
本文介绍如何在Linux环境中利用bash shell script动态生成变量名来监控HCP流程中7个步骤的subject完成状态。由于采用了并行运行的方式,通过这种方式可以有效地组织和检查每个步骤的进度。

1211

被折叠的 条评论
为什么被折叠?



