🐉

自创绝学:神行百变

🐉

第二十二回:九难师太传绝学,打包招式便复用

👱

这“神行百变”虽然好用,但每次都要把那几百句口诀(代码)重念一遍,太费劲了。有没有办法把它们打包成一个词,我一喊这词,招式就出来了?

👳

这就叫函数(Function)。你把一段常用的代码打包起来,起个名字叫“神行百变”。以后只要喊这个名字,里面的代码就会自动执行。省时省力!

📦 定义绝招 (定义函数)

格式很简单,名字后面加个括号就行。

run_away(){
echo "脚底抹油,溜之大吉!"
echo "青山不改,绿水长流!"
}

注意:Shell 函数不需要写参数列表,括号里永远是空的 ()

📣 施展绝招 (调用函数)

直接喊名字,不要加括号

echo "遇到危险了!"
run_away # 这里调用函数

📨 招式传参 (函数参数)

函数虽然定义时没参数,但调用时可以给它塞东西。

say_hello(){
echo "你好,$1 !我是 $2。"
}

say_hello "皇上" "小桂子"

注意:函数里的 $1 是函数接到的第一个参数,不是脚本的 $1。这叫“内部乾坤”。

🔙 探子回报 (返回值)

函数执行完,可以用 return 返回一个数字(只能是0-255),表示成功还是失败。

check_enemy(){
return 1 # 发现敌人
}

check_enemy
echo "探子回报:$?" # 输出 1

如果要返回字符串,只能用 echo 打印出来,外面用反引号捕获。

🖐️ 动手时刻:韦氏问候机

编写 greet_func.sh,封装一个问候函数。

  1. 编写脚本:
    #!/bin/bash
    
    # 定义函数
    greet(){
        echo "--- 开始行礼 ---"
        echo "参见 $1 大人!"
        echo "卑职 $2 给您请安了!"
        echo "--- 礼毕 ---"
    }
    
    # 调用函数
    greet "多隆" "韦小宝"
    greet "康亲王" "韦爵爷"
                        
  2. 运行: bash greet_func.sh