1.shell实现斐波那契数列
##实现一
arr[0]=1
arr[1]=1
i=0
@H_404_15@read max
while [ $i -le $max ]
do
@H_404_15@let arr[$i+2]=arr[$i+1]+arr[$i]
@H_404_15@let i++
done
@H_404_15@echo ${arr[$max]}
#实现二
function fib()
{
temp=$1
if [ $temp -lt 2 ] ;then
@H_404_15@echo 1
return
fi
res1=`fib $((temp-1))`
res2=`fib $((temp-2))`
@H_404_15@echo $((res1+res2))
}
#read num
#fib $num
#实现三
first=1
second=1
last=1
if [ $1 -lt 2 ];then
@H_404_15@echo 1
fi
i=2
while [ $i -le $1 ]
do
@H_404_15@let last=$first+$second
@H_404_15@let first=$second
@H_404_15@let second=$last
@H_404_15@let i++
done
@H_404_15@echo $last
123abc456
456def123
567abc789
789def567
要求输出:
456ABC123
123DEF456
789ABC567
567DEF789
实现思路:按行读取,将一行切割成三部分,
第二部分字母转化为小写转化为大写
最后拼接成一块输出重定向到另一个文件
while @H_404_15@read line
do
part1=$( @H_404_15@echo $line |cut -c 1-3 )
part2=$( @H_404_15@echo $line |cut -c 4-6 |tr '[a-z]' 'A-Z')
part3=$( @H_404_15@echo $line |cut -c 7-9 )
@H_404_15@echo ${part3}${part2}${part1}
done < file1 >file2
3.用Shell实现希尔排序
function shell_sort()
{
@H_404_15@echo ${a[*]}
size=${#a[@]}
gap=$size
#for (( gap=size/3+1;$gap>1; gap=$gap/3+1 ))
while((gap>1))
do
@H_404_15@let gap=$gap/3+1
for ((idx=gap;idx<size;idx++))
do
@H_404_15@let pre=idx-gap
@H_404_15@let save=${a[idx]}
#while [ $pre -ge 0 && $save -le ${a[$pre]} ]
while ((pre>=0&&a[pre]>save))
do
@H_404_15@let a[pre+gap]=a[pre]
@H_404_15@let pre-=gap
done
@H_404_15@let a[$pre+gap]=$save
@H_404_15@echo ${a[*]}
done
done
@H_404_15@echo ${a[@]}
}
@H_404_15@echo "please input num"
@H_404_15@read num
i=0
while [ $num -gt 0 ]
do
@H_404_15@read a[i]
@H_404_15@let i++
@H_404_15@let num-=1
@H_404_15@echo ${a[*]}
done
shell_sort $@