不定期分享linux系统、shell脚本相关文章,喜欢大叔的文章,请关注我。前言在使用Linux系统时,就需要学习shell脚本的编写,shell作为脚本语言学习起来相对比较简单,shell脚本支持自定义函数,可以让其他程序进行调用,今天给大家分享一些函数的使用技巧。
shell脚本函数标题图
Linux系统相关信息Linux系统版本: CentOS Linux release 7.6bash版本:GNU bash, version 4.2.46(2)-releaseshell脚本函数相关技巧定义shell脚本函数简单定义一个函数,可以通过source命令或者 【.】命令读入文件的所有语句,可以经定义的函数当作linux系统的命令直接使用,如下。
#!/bin/bashf () { echo $1 }向shell脚本函数传递数组如果将数组变量当作成函数的参数,那么shell函数只会读取第一值,在函数内部是用$@内置变量,可以包含所有参数,同时将参数在赋值给新的数组变量。
#!/bin/bashTran_array () { local new_array new_array=($(echo $@)) echo "new array value is : ${new_array[*]}"}[root@api function]# test=(1 2 3 4 5)[root@api function]# Tran_array ${test[*]}new array value is : 1 2 3 4 5在向函数传递参数时需要使用${array[*]},将数组的所有参数传递给函数。
定义数组累计相加函数我们在写shell脚本时,如果要经常计算一个数组内的所有数字相加的结果,那么可以定义一个函数来简化过程。
#!/bin/bashAdd_array () { local sum=0 local new_array new_array=($(echo "$@")) for v in ${new_array[*]} do sum=$[ $sum + $v ] done echo $sum}[root@api function]# . Function_set.sh [root@api function]# test=(1 2 3 4 5)[root@api function]# Add_array ${test[*]}15定义阶乘函数(理解函数递归)函数间互相调用产生循环的递归调,需要依靠函数嵌套或者函数自我调用来实现,用阶乘就是1*2*3*...n,使用shell脚本定义阶乘递归函数,可以让我们很好理解函数的递归,对于递归理解起来需要逻辑思维,简单的说就是从将一个大的工作逐渐减少成一个小工作。
#!/bin/bashFactl () { [ $1 -eq 1 ] && echo 1 || { local tmp=$[ $1 -1 ] local ret=$(Factl $tmp) echo $[ $ret * $1 ] }}[root@api function]# . Function_set.sh [root@api function]# [root@api function]# Factl 5120[root@api function]# Factl 103628800喜欢大叔文章的可以关注我哦。