是解析函数中bash脚本参数的解决方法

运行命令:
./script.sh -t -r -e

脚本:

#!/bin/sh
# parse argument function
parse_args() {
echo "$#"   #<-- output: 0
}


# main
echo "$#"   #<-- output: 3

# parsing arguments
parse_args

最佳答案

$#计算当前范围内的参数数量。由于每个函数都有自己的作用域,并且您不将任何参数传递给parse_args,因此$#在其中始终为0。

要获得所需的结果,请将最后一行更改为:

parse_args "$@"

The special variable "$@" 作为单独的单词扩展到当前(顶级)范围的位置参数。随后,它们被传递给parse_args的调用。

关于bash参数在函数中解析,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25702969/

10-11 23:13
查看更多