👱
这“神行百变”虽然好用,但每次都要把那几百句口诀(代码)重念一遍,太费劲了。有没有办法把它们打包成一个词,我一喊这词,招式就出来了?
👳
这就叫函数(Function)。你把一段常用的代码打包起来,起个名字叫“神行百变”。以后只要喊这个名字,里面的代码就会自动执行。省时省力!
📦 定义绝招 (定义函数)
格式很简单,名字后面加个括号就行。
run_away(){
echo "脚底抹油,溜之大吉!"
echo "青山不改,绿水长流!"
}
echo "脚底抹油,溜之大吉!"
echo "青山不改,绿水长流!"
}
注意:Shell 函数不需要写参数列表,括号里永远是空的 ()。
📣 施展绝招 (调用函数)
直接喊名字,不要加括号!
echo "遇到危险了!"
run_away # 这里调用函数
run_away # 这里调用函数
📨 招式传参 (函数参数)
函数虽然定义时没参数,但调用时可以给它塞东西。
say_hello(){
echo "你好,$1 !我是 $2。"
}
say_hello "皇上" "小桂子"
echo "你好,$1 !我是 $2。"
}
say_hello "皇上" "小桂子"
注意:函数里的 $1 是函数接到的第一个参数,不是脚本的 $1。这叫“内部乾坤”。
🔙 探子回报 (返回值)
函数执行完,可以用 return 返回一个数字(只能是0-255),表示成功还是失败。
check_enemy(){
return 1 # 发现敌人
}
check_enemy
echo "探子回报:$?" # 输出 1
return 1 # 发现敌人
}
check_enemy
echo "探子回报:$?" # 输出 1
如果要返回字符串,只能用 echo 打印出来,外面用反引号捕获。
🖐️ 动手时刻:韦氏问候机
编写 greet_func.sh,封装一个问候函数。
- 编写脚本:
#!/bin/bash # 定义函数 greet(){ echo "--- 开始行礼 ---" echo "参见 $1 大人!" echo "卑职 $2 给您请安了!" echo "--- 礼毕 ---" } # 调用函数 greet "多隆" "韦小宝" greet "康亲王" "韦爵爷" - 运行:
bash greet_func.sh