这是参数化函数的正确语法吗?
#!/bin/bash
twoPow()
{
prod=1
for((i=0;i<$1;i++));
do
prod=$prod*2
done
return prod
}
echo "Enter a number"
read num
echo `twoPow $num`
输出:
bash sample.sh
输入数字
3
sample.sh:第10行:return:prod:需要数字参数
第2部分: 我删除了返回但如果我想多次运行并存储如下结果,我该怎么办?我怎样才能做到这一点?
#!/bin/bash
tp1=1
tp2=1
twoPow()
{
for((i=0;i<$1;i++));
do
$2=$(($prod*2))
done
}
twoPow 3 tp1
twoPow 2 tp2
echo $tp1+$tp2
答案 0 :(得分:4)
在bash脚本中,您无法将值返回给调用代码。
模仿“返回”值的最简单方法是将其全局变量设置为预期结果。
幸运的是,在bash中,默认情况下所有变量都是全局变量。只需在调用该函数后尝试输出prod
的值。
答案 1 :(得分:0)
示例Bash函数定义和使用少量参数和返回值进行调用,它可能很有用并且可以正常工作。
#!/bin/sh
##Define fiunction
function sum()
{
val1=$1
val2=$2
val3=`expr $val1 + $val2`
echo $val3
}
#Call function with 2 parameters and it return 1 parameter.
ret_val=$(sum 10 20)
echo $ret_val