在bash中使用函数

时间:2013-10-09 02:59:40

标签: bash function shell

这是参数化函数的正确语法吗?

#!/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

2 个答案:

答案 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