我需要在带有参数的函数内获取脚本参数。
./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 $@
或者你可以:
- 通过
$# $@
、检查$1
并echo $2 $3 $4
- 通过
$# $@
,检查$1
,shift
然后echo $1 $2 $3
- 存储
$@
为脚本级变量并从函数内部访问它