函数
与别名(alias)的区别是,别名只适合封装简单的单个命令,函数则可以封装复杂的多行命令
定义
shell
#! /bin/bash
# 第一种
fn() {
echo "Hello $1" # $1~$9:函数的第一个到第9个的参数
}
# 第二种
function fn() {
echo "Hello $1"
}
# 调用时,就直接写函数名,参数跟在函数名后面
fn 123 # Hello 123
注意点
Bash 函数体内直接声明的变量,属于全局变量,整个脚本都可以读取
local命令声明的$foo变量,只在函数体内有效,函数体外没有定义
shell
#! /bin/bash
fn() {
name=chaos # 直接声明的变量外部可以读取
local foo=132 # local声明的变量外部无法读取
}
fn # 要先调用一下
echo "name: $name" # chaos
echo "foo: $foo" # 空白