Shell笔记:函数基础使用

语法如下:

[function] func_name() {
  ...
  [return int]
}

function关键字: 定义一个函数,function关键字是可选的。
语句结束符: 函数中每个语句以换行符作为结束,不用使用分号,一行一句即可,分号通常只是用于连接两个语句。
return关键字: 也是可选的,不指定时自动使用最后一个语句的运行结果作为返回值。
函数返回值: 其实无论是否使用return指定函数返回值,本质上,函数的返回值都是此函数最后一条语句的运行结果。shell中一条语句的运行结果为整数,0表示执行成功,其他数字表示失败。获取函数返回值使用 $?$? 的本质是代表它上一条语句的执行结果,所以函数执行之后想要拿到其返回值, $? 和函数执行语句之间就不能有其他语句的执行。
函数传参: 格式为 func_name var1 var2 var3 ... ,在函数中获取参数时使用 $1${1} 的形式获取对应第一个参数,需要注意的是,获取第十个及以上参数时,就只能使用大括号的格式获取了, $10 是无法获取第十个参数的。

#!/bin/sh
function hello() {
    echo "Hello Shell"
    # 函数参数以$1或${1}、$2或${2}等方式获取对应的第一个、第二个等参数,
    # 如果参数个数大于9,那么从第十个开始,就必须使用${10}的格式了,不能使用$10的格式了
    echo 1
    echo ${2}
    return 0
}

# 函数执行直接将函数名当做命令执行即可,函数参数以空格分隔分别传入
hello var1 var2
# 函数执行结果需要在函数执行之后下一行立马获取,不能有其他语句在这中间去执行,
# 否则$?拿到的就是它上一条语句的执行结果,而不是函数的执行结果了
result=$?
echo ${result}
Hello Shell
var1
var2
0

local变量: local变量就是函数内的局部变量,只能用在函数中,如果在函数之外使用local定义变量,会报错并提示 local: can only be used in a function 。当然,函数内定义的local变量,在函数外就无法使用了,使用时不会报错,只是会拿到一个空的值。

posted @ 2024-01-21 11:18  山上下了雪-bky  阅读(7)  评论(0编辑  收藏  举报