Shell 函数
函数
传参 $1 , $2
变量 local
返回值 return $?
完成特定功能的代码片段(块)
在shell中定义函数可以使用代码模块化,便于复用代码
函数必须先定义才可以使用
定义函数
函数名(){ 函数要实现的功能代码 } function 函数名(){ 函数要实现的功能代码 }
小案例
#!/bin/bash if [ $# -lt 1 ];then echo -e "Please input factorial number!\033[31m[sh $0 number]\033[0m" exit 1 fi # 定义函数 阶乘 function factorial(){ fact=1 for ((i=1;i<=$1;i++)) do fact=$[$fact * $i] #let fact=$fact*$i #let fact*=$i done echo "$1的阶乘是: $fact" } # 对于函数来讲,脚本无论是$1 $2 都是函数的第一个参数。 factorial $1 factorial $2 factorial $3
函数的返回 return
#!/bin/bash #function ret(){ # return $1 #} #ret $1 #echo "return value: $?" # 定义函数 自定义shell返回值 function ret(){ read -p "Please input number: " number # shell 返回码最高是255 return $[$number*2] } ret echo "return value: $?"
函数传参 位置参数
#!/bin/bash if [ $# -ne 3 ];then echo "usage: [sh `basename $0` par1 par2 par3]" exit 1 fi function parameter(){ echo "$(($1 * $2 * $3))" } result=`parameter $1 $2 $3` echo "result is: $result"
函数传参 数组变量
#!/bin/bash num=(1 2 3 4 5) num2=(2 3 4) # 定义阶乘函数 function array(){ local factorial=1 # 定义局部变量 for i in "$@" do factorial=$[$factorial * $i] done echo $factorial } # 函数可以多次调用 array ${num[@]} # 数组所有元数值 array ${num2[*]} # 数组所有元数值 echo $factorial # 上面已经设置为局部变量,这里输出为空
for i 介绍
#!/bin/bash for i in "$@" for i in "$*" # 加上双引号会认为是一个参数 for i in $* for i do let num+=$i done echo $num sh -x for.sh 1 2 + for i in '$*' + let num+=1 + for i in '$*' + let num+=2 + echo 3 3
函数返回 输出数组变量
#!/bin/bash num=(1 2 3) num2=(3 6 9) array() { #echo -e "all parameters: $*" # 打印数组中所有参数 local newarray=("$@") local outarray=() #echo ${newarray[@]} local i for ((i=0;i<$#;i++)) do #outarray[$i]=$[ ${newarray[$i]} * 5 ] newarray[$i]=$(( ${newarray[$i]} * 5 )) done echo ${newarray[@]} } result=`array ${num[@]}` echo ${result[@]} result=`array ${num2[@]}` echo ${result[@]} ------------------------------------ #!/bin/bash num=(1 2 3) array() { local j local outarray=() for i in $* do outarray[j++]=$[ $i * 5 ] done echo ${outarray[@]} } result=`array ${num[@]}` echo ${result[@]} # 函数接收位置参数 $1 $2 $3 ... $n # 函数接收数组变量 $* 或 $@ # 函数使用参数的个数 $# # 函数将接收到的所有参数赋值给数组 newarray=("$@")
本文作者:南哈哈
本文链接:https://www.cnblogs.com/nanruosen/p/16440132.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步