方法一:
#!/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