# 给函数传参的时候,直接将参数放在函数的右边就好了,不同参数以空格分割
# 最好将参数放到“”,避免带空格的参数导致错误解析
# 对应函数名后的参数位置,参数依次为 $1, $2, $3 … $n
# $0 表示当前函数名
# $# 表示参数数量
# $* 和 $@ 表示传递给函数的所有参数,做参数转发的时候比较有用
# * "$*" 或者“some $* some" 扩展为 "$1 $2 $n". 多个字符串被所见为一个字符串了,做参数转发的时候,不适用
# * "$@" 或者“some $@ some",扩展为 "$1" "$2" "$n" 适用于参数转发的情况,参考下面的例子
# * 当没有“”, $* $@ 是一样的,都是简单的将参数展开并转发,类似宏展开,参考下面的例子,会导致,包含空格的参数识别错误
func_name() {
echo "current func name [$0]"
}
func_par_num() {
echo "func param num [$#]"
}
func_para_forword_sub() {
echo "[sub] param num [$#]"
echo "[sub] \$@ [" $@ "]"
}
func_para_forword() {
func_para_forword_sub $@ #直接展开了最终传给 func_para_forword_sub 的是三个参数 1 2 3
func_para_forword_sub $* #直接展开了最终传给 func_para_forword_sub 的是三个参数 1 2 3
func_para_forword_sub "$@" #
func_para_forword_sub "$*" #直接展开了最终传给 func_para_forword_sub 的是三个参数 1 2 3
func_para_forword_sub "\$@ [$@]"
func_para_forword_sub "\$* [$*]"
}
func_para_forword 1 "2 3"
函数的意义:1. 可读性,2. 重复利用