网上介绍基本用法的已经很多了,这里记录一下两者的区别。
while不能给循环体以外的变量赋值
for 可以
原因大概是 while会起一个子shell,所有变量只在子 shell里面进行,而for,看起来并不会。
因为是日常记录,就简单写一下。
i=0
array=[]
git diff --name-only | while read line
do
echo $line
array[$i]=$line
echo ${array[$i]}
let i++
done
j=0
folder_list=[]
for i in `git diff --name-only`
do
folder_list[j]=$i
j=`expr $j + 1`
done
i=0
while [ $i -lt ${#array[@]} ]
do
echo "i=${i}"
echo ${array[$i]}
let i++
done
i=0
while [ $i -lt ${#folder_list[@]} ]
do
echo "i=${i}"
echo ${folder_list[$i]}
let i++
done
回显是这样的:
tools/build/flexinc-package
tools/build/flexinc-package
tools/dev/bin/flexinc-setup
tools/dev/bin/flexinc-setup.
这是 while循环的
i=0
[]
这是for循环的
i=0
tools/build/flexinc-package
i=1
tools/dev/bin/flexinc-setup
root@ubuntu:/opt/code#