5.4 循环结构之for
for 变量 in 范围/数组; do
statement;
done ;
sumn = 0 ;
for n in 1 2 3 4 5 6 7 8 9 10 ; do
sumn = $(( sumn+ n)) ;
done ;
echo "获取1到10的和1=" $sumn ;
sumn = 0 ;
for n in { 1 .. 10 } ; do
sumn = $(( sumn+ n)) ;
done ;
echo "获取1到10的和2=" $sumn ;
sumn = 0 ;
for (( n= 1 ; n<= 10 ; n++ )) ; do
sumn = $(( sumn+ n)) ;
done ;
echo "获取1到10的和3=" $sumn ;
sumn = 0 ;
for n in $( seq 10 ) ; do
sumn = $(( sumn+ n)) ;
done ;
echo "获取1到10的和4=" $sumn ;
sumn = 0 ;
for n in $( seq 1 10 ) ; do
sumn = $(( sumn+ n)) ;
done ;
echo "获取1到10的和4=" $sumn ;
sumn = 0 ;
for n in $( seq 1 1 10 ) ; do
sumn = $(( sumn+ n)) ;
done ;
echo "获取1到10的和4=" $sumn ;
echo "99乘法表1" ;
for (( i= 1 ; i<= 9 ; i++ )) ; do
for (( j= 1 ; j<= i; j++ )) ; do
printf $i "*" $j "=" $(( i* j)) " " ;
if [ $(( i* j)) -lt 10 ] ; then
printf " " ;
fi ;
done ;
echo "" ;
done ;
echo "99乘法表2" ;
for (( i= 1 ; i<= 9 ; i++ )) ; do
for (( j= 9 ; j>= 1 ; j-- )) ; do
if [ $j -le $i ] ; then
printf $i "*" $j "=" $(( i* j)) " " ;
if [ $(( i* j)) -lt 10 ] ; then
printf " " ;
fi ;
else
printf " " ;
fi ;
done ;
echo "" ;
done ;
echo "求1到100内质数的和》》》》1" ;
sumn = 0 ;
for (( n= 1 ; n<= 100 ; n++ )) ; do
b = 1 ;
for (( m= 2 ; m< n; m++ )) do
if [ $(( n% m)) -eq 0 ] ; then
b = $(( b+ 1 )) ;
break ;
fi ;
done ;
if [ $b -eq 1 -a $n -ne 1 ] ; then
echo $n "是质数!" ;
sumn = $(( sumn+ n)) ;
fi ;
done ;
echo "求1到100内质数的和1=" $sumn ;
echo "求1到100内质数的和》》》》2" ;
sumn = 0 ;
for (( n= 1 ; n<= 100 ; n++ )) ; do
for (( m= 2 ; m< n; m++ )) do
if [ $(( n% m)) -eq 0 ] ; then
break ;
fi ;
done ;
if [ $m -eq $n ] ; then
echo $n "是质数!" ;
sumn = $(( sumn+ n)) ;
fi ;
done ;
echo "求1到100内质数的和2=" $sumn ;
echo "------------for练习1:99乘法表---------------" ;
for (( i= 1 ; i<= 9 ; i++ )) ; do
for (( j= 1 ; j<= i; j++ )) ; do
printf $i "*" $j "=" $(( i* j)) " " ;
if [ $(( i* j)) -lt 10 ] ; then
printf " " ;
fi ;
done ;
echo "" ;
done ;
echo "------------for练习2:99乘法表---------------" ;
for (( i= 1 ; i<= 9 ; i++ )) ; do
for (( j= 1 ; j<= 9 ; j++ )) ; do
if test $i -le $j ; then
printf $i "*" $j "=" $(( i* j)) " " ;
if [ $(( i* j)) -lt 10 ] ; then
printf " " ;
fi ;
else
printf " " ;
fi ;
done ;
echo "" ;
done ;
echo "------------for练习3 判断一个数是不是质数------------------------------" ;
for (( n= 1 ; n<= 100 ; n++ )) ; do
k = 1 ;
for (( m= 2 ; m< n; m++ )) ; do
if test $(( n % m )) -eq 0 ; then
k = $[ k+1] ;
break ;
fi ;
done ;
if [ $k -eq 1 -a $n -gt 1 ] ; then
echo $n "是质数!" ;
fi ;
done ;
echo "------------for练习3 判断一个数是不是质数------------------------------" ;
for (( n= 1 ; n<= 100 ; n++ )) ; do
k = 1 ;
for (( m= 2 ; m< n; m++ )) ; do
if test $(( n % m )) -eq 0 ; then
k = $[ k+1] ;
break ;
fi ;
done ;
if [ $k -eq 1 -a $n -gt 1 ] ; then
echo '$n是质数!' ;
echo "$n 是质数!" ;
fi ;
done ;
5.5 循环结构之while
while 判断语句; do
statement;
done ;
sumn = 0 ; geShu = 0 ;
n = 1 ;
while [ $n -le 100 ] ; do
n1 = $(( n% 10 )) ;
n2 = $(( n/ 10 % 10 )) ;
n3 = $(( n/ 100 )) ;
if [ $n1 -eq 1 -o $n2 -eq 1 -o $n3 -eq 1 ] ; then
m = 2 ;
while [ $m -lt $n ] ; do
if [ $(( n% m)) -eq 0 ] ; then
break ;
fi ;
m = $(( m+ 1 )) ;
done ;
if [ $m -eq $n ] ; then
sumn = $(( sumn+ n)) ;
geShu = $(( geShu+ 1 )) ;
echo $n "是满足条件的数字!" ;
fi ;
fi ;
n = $(( n+ 1 )) ;
done ;
echo "1到100内位数上含有1的所有质数的平均值=" $(( sumn/ geShu)) ;
echo $sumn ":" $geShu "1到100内位数上含有1的所有质数的平均值=" $( echo "scale=2;" $sumn"/" $geShu| bc ) ;
echo $sumn ":" $geShu "1到100内位数上含有1的所有质数的平均值=" $( echo "scale=2;$sumn /$geShu " | bc ) ;
n = 1 ;
echo $n "---" ;
echo "---$n ---" ;
ciShu = 0 ;
m = 0 ;
while [ $ciShu -lt 5 ] ; do
ciShu = $(( ciShu+ 1 )) ;
read -p "请输入一个三位数:" n;
if test $n -eq 123 ; then
m = $(( m+ 1 )) ;
break ;
fi ;
done ;
if [ $m -eq 1 ] ; then
echo "经过$ciShu 后得到正确密码!" ;
else
echo "输入次数5次了还没有正确!!" ;
fi ;
echo "------------while练习 获取1到10000内所有的完数:因子之和等于此数:6 ------------------------------" ;
n = 1 ;
while test $n -lt 1000 ; do
sumn = 0 ;
m = 1 ;
while test $m -lt $n ; do
if [ $(( n % m)) -eq 0 ] ; then
sumn = $(( sumn+ m)) ;
fi ;
m = $[ m+1] ;
done ;
if [ $n -eq $sumn ] ; then
echo "$n 是完数!"
fi ;
n = $(( n+ 1 )) ;
done ;