从函数回显脚本参数

从函数回显脚本参数

我需要在带有参数的函数内获取脚本参数。

./myscript 1 2 3

function_name () {
   if [ $1 == 3 ]; then
        # I need the $1 in the following echo to be the script argument, not the function argument
        echo $1 $2 $3
   fi
}

function_name $#

答案1

这很有趣。问题是函数的作用域覆盖了脚本的作用域。我看不出有什么简单的方法可以解决这个问题。

但是,您可以将变量作为参数传递(传递到函数中):

function_name () {
   [[ $# == 3 ]] && echo $1 $2 $3
}

function_name $@

或者你可以:

  • 通过$# $@、检查$1echo $2 $3 $4
  • 通过$# $@,检查$1shift然后echo $1 $2 $3
  • 存储$@为脚本级变量并从函数内部访问它

相关内容