我想编写一个可以从具有许多不同变量的脚本中调用的函数。由于某些原因,我在做这件事时遇到了很多麻烦。我读过的示例总是只使用全局变量,但据我所知,这不会使我的代码更具可读性。
预期用途示例:
#!/bin/bash
#myscript.sh
var1=$1
var2=$2
var3=$3
var4=$4
add(){
result=$para1 + $para2
}
add $var1 $var2
add $var3 $var4
# end of the script
./myscript.sh 1 2 3 4
我尝试$1
在函数中使用 and such ,但随后它只需要调用整个脚本的全局函数。基本上我正在寻找类似$1
,$2
等等的东西,但在函数的本地上下文中。如您所知,函数可以在任何适当的语言中工作。
答案1
要调用带有参数的函数:
function_name "$arg1" "$arg2"
该函数通过参数的位置(而不是名称)引用传递的参数,即 $1、$2 等等。 $0 是脚本本身的名称。
例子:
#!/bin/bash
add() {
result=$(($1 + $2))
echo "Result is: $result"
}
add 1 2
输出
./script.sh
Result is: 3
答案2
在主脚本中,$1、$2 代表您已经知道的变量。在下标或函数中,$1 和 $2 将表示传递给函数的参数,作为该下标的内部(局部)变量。
#!/bin/bash
#myscript.sh
var1=$1
var2=$2
var3=$3
var4=$4
add(){
#Note the $1 and $2 variables here are not the same of the
#main script...
echo "The first argument to this function is $1"
echo "The second argument to this function is $2"
result=$(($1+$2))
echo $result
}
add $var1 $var2
add $var3 $var4
# end of the script
./myscript.sh 1 2 3 4