shell脚本----函数的应用!

Posted handsomeboy-东

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本----函数的应用!相关的知识,希望对你有一定的参考价值。

函数概述

当一些命令序列需要反复调用执行时,若每次使用同一命令就使用一遍,就会导致代码量很大,行数特别多,我们就可以将这些命令序列按格式写在一起,做成函数形式,以便调用

[function] 函数名 (){
	命令序列
	[return x]
}
函数名     //表示调用函数
[root@localhost ww]# vim e.sh
#!/bin/bash
hello(){
echo hello
}
world(){
echo siren
}
nihao(){
echo `hello` `world`
}
nihao 
#调用必须在函数后面才能调用
[root@localhost ww]#chmod +x e.sh
[root@localhost ww]#./e.sh
hello siren
[root@localhost ww]# vim e.sh
#!/bin/bash
sum(){
a=2
a=3
let sum=$a+$b
echo $sum
}
sum
[root@localhost ww]#./e.sh
5
[root@localhost ww]# vim e.sh
#!/bin/bash
sum(){
let sum=$1+$2
echo $sum
}
sum $1 $2
[root@localhost ww]#./e.sh 2 3
5
[root@localhost ww]# vim e.sh
#!/bin/bash
sum1(){
c=0
for ((i=1;i<=100;i++))
do
        if [ $((i%2)) -eq 0 ];then
                let c=$c+$i
        fi
done
echo $c
}
sum1
[root@localhost ww]#./e.sh
2550
[root@localhost ww]# vim e.sh
#!/bin/bash
oushu(){
read -p "您想求1到多少的偶数和 :" sum
a=0
for ((i=1;i<=$sum;i++))
do
        if [ $((i%2)) -eq 0 ];then
                let a=$i+$a
        fi
done
echo "1到[$sum]偶数和为: $a"
}
SUM(){
read -p "您想求1到多少的总和 :" sum1
b=0
for ((j=1;j<=$sum1;j++))
do
        let b=$j+$b
done
echo "1到[$sum1]总和为 : $b"
}
if [ $1 == 总和 ];then
SUM
elif [ $1 == 偶数 ];then
oushu
else
        echo "参数错误"
fi
[root@localhost ww]# . e.sh 总和
您想求1到多少的总和 :10
1[10]总和为 : 55
[root@localhost ww]# . e.sh 偶数
您想求1到多少的偶数和 :10
1[10]偶数和为: 30
source 脚本文件 函数名 :调用其他脚本中的函数
[root@localhost ww]# vim e.sh
#!/bin/bash
hello(){
echo hello
ls xxxxx
return 20             //给予函数一个固定返回值,以此来知道哪个函数错误,不过return执行返回值后函数就结束,最好写在最后
}
hello
[root@localhost ww]#./e.sh 
hello
ls: 无法访问xxxxx: 没有那个文件或目录
[root@localhost ww]# $?            //这里的$?是查看脚本的最后一个命令是否成功
bash: 20: 未找到命令...              //当函数很多的时候,可以这样给予返回值,这样便于查询哪个函数有问题

数组

[root@localhost ww]# a=(1 2 3 4 5)     //定义数组变量
[root@localhost ww]# declare -a       //查看所有的数组
declare -a BASH_ARGC='()'
declare -a BASH_ARGV='()'
declare -a BASH_LINENO='()'
declare -ar BASH_REMATCH='()'
declare -a BASH_SOURCE='()'
declare -ar BASH_VERSINFO='([0]="4" [1]="2" [2]="46" [3]="2" [4]="release" [5]="x86_64-redhat-linux-gnu")'
declare -a DIRSTACK='()'
declare -a FUNCNAME='()'
declare -a GROUPS='()'
declare -a PIPESTATUS='([0]="0")'
declare -a a='([0]="1" [1]="2" [2]="3" [3]="4" [4]="5")'
####数组中的元素都有对应的下标,下标是从[0]开始
[root@localhost ww]# echo ${a[0]}    //根据下标调用数组中的元素
1
[root@localhost ww]# echo ${a[*]}      //调用数组中的所有元素,*可以换成@
1 2 3 4 5
[root@localhost ww]# echo ${#a[*]}     //查看数组中所有元素的个数,#换成!是查看所有的下标
[root@localhost ww]# unset 数组名[下标]    //删除数组中的元素
[root@localhost ww]# echo ${a[*]:2:3}     //切片调用数组中下标2开始往后的3个数组
3 4 5
[root@localhost ww]# echo ${a[*]/5/15}     //搜索下标5的元素临时改为15,没有真正的修改
1 2 3 4 15
[root@localhost ww]# vim e.sh
#!/bin/bash
a=(1 2 3 4 5)
for i in ${a[*]}
do
        echo $i
done
[root@localhost ww]# bash e.sh
1
2
3
4
5
[root@localhost ww]# vim e.sh
#!/bin/bash
#取一个数组中的最大值
a=(10 20 30 40 50)
max=${a[0]}
for ((i=1;i<=${#a[*]};i++))
do
        if [[ $max -lt ${a[i]} ]];then
                max=${a[i]}
        fi
done
echo $max
[root@localhost ww]# bash d.sh 
50
#!/bin/bash
#冒泡排序
a=(3 2 5 1 4)
for ((i=1;i<${#a[*]};i++))
do
	for ((j=0;j<${#a[*]}-i;j++))

	do
		if [ ${a[$j]} -gt ${a[$[$j+1]]} ];then
 			temp=${a[$j]}
    		a[$j]=${a[$[$j+1]]}
    		a[$[$j+1]]=$temp
		fi	
	done
done
echo ${a[*]}
[root@localhost ww]# bash mp.sh 
1 2 3 4 5

以上是关于shell脚本----函数的应用!的主要内容,如果未能解决你的问题,请参考以下文章

shell 脚本 片段

用于确保在任何给定时间仅运行一个 shell 脚本的 shell 片段 [重复]

shell脚本----函数的应用!

常用python日期日志获取内容循环的代码片段

Python如何调用别人写好的脚本

shell脚本经典题之函数应用