方法一:
#!/bin/bash declare -i i=1 declare -i j=1 declare -i count=10 while [ $i -lt $count ];do for ((j=1;j<=$i;j++));do echo -ne "$j*$i=$(($j*$i))\t" if [ $j -eq $i ];then echo -e '\r' fi done i=`expr $i + 1` done
方法二:
#!/bin/bash let j=1 while (($j<10)) do i=1 while (($i<=$j)) do echo -n "$i*$j=$(($i*$j)) " if [ $i -eq $j ] then echo " " else : fi let "i=i+1" done let "j=j+1" done
方法三:
#!/bin/bash declare -i i=1 declare -i j=1 declare -i sum=9 for ((i=1;i<=sum;i++));do for ((j=1;j<=i;j++));do if [ $i -eq $j ];then echo -e "$j*$i=$(($j*$i))" else echo -en "$j*$i=$(($j*$i))\t" fi done done注意:
***************************************************************************************
[oracle@sor-sys zy]$ echo -en "haha\nhuhu\r"
haha
[oracle@sor-sys zy]$ echo -e "haha\nhuhu"
haha
huhu
[oracle@sor-sys zy]$ echo -en "haha\nhuhu"
haha
huhu[oracle@sor-sys zy]$ echo -n "haha\nhuhu"
haha\nhuhu[oracle@sor-sys zy]$echo "haha\nhuhu"
haha\nhuhu
[oracle@sor-sys zy]$
***************************************************************************************
测试结果:
[root@sor-sys zy]# sh new9.sh 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
(二)冒泡算法
我们有这样一个问题,排列组合,如下:
#!/bin/bash
a=(12 6 89 48 2)
array(){
for ((i=0;i<=4;i++));do
if [ ${a[$i+1]} -lt ${a[$i]} ];then
tmp2=${a[$i]}
tmp1=${a[$i+1]}
a[$i+1]=$tmp2
a[$i]=$tmp1
fi
done
}
if [ ${a[0]} -gt ${a[4]} ];then
old=${a[0]}
little=${a[4]}
a[0]=$little
a[4]=$old
# array
array
else
array
fi
echo ${a[*]}
之前这样写过,但是老是出现问题,然后问了同事才知道不是语法错误,是逻辑错误,例如左边的这个数会和右边的比较
当第四个和第五个比较的完的时候,第五和还会和第六个比较,但是第六个元素是不存在的,所以就会报错~
测试如下:
[root@Test230 test]# sh -n array.sh 【语法木有错误(⊙o⊙)哦~】
[root@Test230 test]# sh array.sh
array.sh: line 6: [: -lt: unary operator expected
2 6 48 12 89
下面就是冒泡算法了,呵呵~
#!/bin/bash
values=(39 5 36 12 9 3 2 30 4 18 22 1 28 25)
num=${#values[*]}
echo Before:
echo ${values[*]}
for ((i=0;i<num;i++));do
lowest=$i
for ((j=i+1;j<num;j++));do
if [ ${values[j]} -le ${values[lowest]} ];then
lowest=$j
fi
temp=${values[i]}
values[i]=${values[lowest]}
values[lowest]=$temp
done
done
echo After:
echo ${values[*]}
[root@Test230 test]# sh array.sh
Before:
39 5 36 12 9 3 2 30 4 18 22 1 28 25
After:
1 2 3 4 5 9 12 22 18 25 28 30 36 39