码迷,mamicode.com
首页 > 系统相关 > 详细

shell脚本:练习题

时间:2016-06-20 00:54:35      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:练习题   return   字符串   local   count   shell   

题目1:1-100求和

非递归版本:

#!/bin/bash

sum=0
while [ $val -le 100 ]
do
	let sum+=val
	let val++
done

echo $sum

sum=0
for i in {1..100}
do
	if [ $i == 1 ]; then
		bar=${bar}${i}
	else
		bar=${bar}+${i}
	fi
	let sum+=i
done

echo  $bar=$sum

sum=0
for (( i=1 ; i<=100 ; i++))
do
	let sum+=i
done
echo $sum

运行结果:
技术分享

递归版本:

#!/bin/bash
function add()
{
	local count=$1
	if [ $count -eq 1 ];then
		echo 1
		return 
	fi
	local tmp=$count
	let --tmp
	local ret=`add $tmp`
	let ret+=count
	echo $ret
}
read c
ret=$(add $c)
echo "$ret"

运行结果:
技术分享


bc计算:

技术分享

2字符串转换,前后数字转换,字母大小写转换:

#!/bin/bash
function str()
{
	while read str
	do
		str1=`echo ${str:0:3}`
		str2=`echo ${str:3:3} | tr ‘[a-z]‘ ‘[A-Z]‘`
		str3=`echo ${str:6:3}`
		printf "%s%s%s\n" "$str3" "$str2" "$str1"
	done<file
}
str

运行结果:
之前:
753asd456

789dfg123

789fdh456

改变后:

技术分享


求文件中行代表数字的最大值最小值:

#!/bin/bash
read name
avg=0
max=0
min=0
cur=0
sum=0
count=0
#cat $name | while read line
while read line
do 
	let	cur=$line
	if [ $count -eq 0 ];then
		 max=$line
		 min=$line
	fi
	
	if [ $cur -gt $max ];then
		 max=$cur
	
    fi

	 if [ $cur -le $min ];then
	     min=$cur
	fi

	let count++
	let sum+=cur
done<$name
	echo "MAX:$max"
	echo "MIN:$min"
	echo "SUM:$sum COUNT:$count"
	echo "average: $((sum/count))"

运行结果:

技术分享


进度条:

技术分享

斐波那契数列:

#!/bin/bash
arry[0]=1
arry[1]=2
temp=0
sum=0
for i in {0..99}
do 
	if [ $i -gt 0 ];then
	let	arry[$i+1]=arry[$i]+arry[$i-1]
	fi
done
echo ${arry[99]}

运行结果:
技术分享

本文出自 “剩蛋君” 博客,请务必保留此出处http://memory73.blog.51cto.com/10530560/1790875

shell脚本:练习题

标签:练习题   return   字符串   local   count   shell   

原文地址:http://memory73.blog.51cto.com/10530560/1790875

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!