为什么无法在函数中获取shell脚本的参数计数

Hun*_*hao 1 linux bash shell

我很困惑为什么不能在函数中获取脚本的参数计数,有人可以帮助我吗?在此先感谢:)
test.sh

#!/bin/bash
check(){
    echo $#
    if [ $# -lt 2 ]; then
        echo "Argument missing"
        exit 1
    fi
}
echo $#
check
Run Code Online (Sandbox Code Playgroud)

跑:

./test.sh aa bb
Run Code Online (Sandbox Code Playgroud)

输出:

2
0
Run Code Online (Sandbox Code Playgroud)

Ign*_*ams 7

函数有自己的参数变量的本地副本,包括$#.它们与函数的参数相关,并且脚本级别的等价物被遮蔽.如果你想获得脚本的参数变量,那么你需要先将它们存储在其他地方或将它们传递给函数.

check "$@"
Run Code Online (Sandbox Code Playgroud)