写了个脚本,其中一个函数:
umbrell_loop(){
#执行多个伞形采样
echo '伞形采样' > umbrell_loop.txt
for (( i=1;i<=6;i++ )) ; do
pulldir="pull${i}"
moveGroup=("MV${i}")
fixedPoint=("FX${i}")
umblDir="mv${i}-um" #在rundir目录下,创建的伞型采样的目录名,要与select4umbrella.py一致
umblOut="mv${i}-umout" #在rundir目录下,创建的伞型采样的目录名,要与select4umbrella.py一致
for j in "${mdpName[0]}.mdp" "npt_umbrella.mdp" "md_umbrella.mdp" ; do
sed -e "s/FXX/FX${i}/g" -e "s/MVX/MV${i}/g" $linkmdp/origin.${j} >$linkmdp/$j
done
run_pull
get_distances
umbrella
#wham
if read -p '按任意键以继续,超时300s' -n1 -t 300 any;then
echo '按键以后,电脑继续跑' #每一次运行工作量都很大,让电脑散热一会儿
else
echo '没按键,电脑休息300s'
fi
done
}
调用该函数以后,i不自增,一直等于1,无限循环!!!!!!!!!!!!!!!!!
其中 run_pull get_distances umbrella 是前面已经定义好的函数。
实在没辙了,改用 for i in 1 2 3 4 5 6就一切正常。
既然用 for i in 1 2 3 4 5 6能正常运行,我这里面的其他地方肯定都没有错误。
极为奇葩!!!!!!!
奇葩问题,for循环的循环变量i不自增
- yejustme
- 帖子: 405
- 注册时间: 2007-04-18 12:08
- 联系:
奇葩问题,for循环的循环变量i不自增
上次由 yejustme 在 2019-04-21 17:27,总共编辑 1 次。
- astolia
- 论坛版主
- 帖子: 6542
- 注册时间: 2008-09-18 13:11
Re: 奇葩问题,for循环的循环变量i不自增
有什么奇葩的,是你没弄懂变量的作用域以及 for in 和 for (( )) 的执行方式区别
做个最简单的例子,自己去领悟吧
做个最简单的例子,自己去领悟吧
代码: 全选
a1() {
i=10
}
a2() {
local i
i=10
}
b() {
for i in 1 2 3; do
echo $i
$1
echo $i
done
for (( i=1; i<=3; i++ )) ; do
echo $i
$1
echo $i
done
}
b a1
b a2