2

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

#!/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 示例.sh

输入一个数字

3

sample.sh:第 10 行:返回: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
4

2 回答 2

4

在 Bash 脚本中,您不能将值返回给调用代码。

像在其他语言中一样模拟“返回”值的最简单方法是将全局变量设置为预期结果。

幸运的是,在 bash 中,所有变量默认都是全局的。只需尝试prod在调用该函数后输出 的值。

于 2013-10-09T03:04:27.387 回答
0

带有几个参数和返回值的示例 Bash 函数定义和调用。它可能有用并且有效。

#!/bin/sh

## Define function
function sum()
{

 val1=$1

 val2=$2

 val3=`expr $val1 + $val2`

 echo $val3

}

# Call function with two parameters and it returns one parameter.
ret_val=$(sum 10 20)
echo $ret_val
于 2013-10-09T03:25:03.773 回答