解析函数参数的目的是什么?

时间:2013-04-08 12:54:52

标签: linux bash

如果我这样做

#!/bin/bash

a=2
func() {
    echo $a
    echo $b
}

b=3
func $b

然后打印2\n3,我只期望3

问题

当函数内部有全局变量时。那么解析BASH中函数的参数的目的是什么?

2 个答案:

答案 0 :(得分:3)

Bash不能像这样工作。 你没有在函数内部进行任何参数。相反,您刚刚初始化了两个您在函数中稍后回显的全局变量。

为了做你需要的事,你应该做以下事情:

#!/bin/bash

a=2
func() {
    # first argument
    echo $1
    # second argument
    echo $2
}

b=3
func $b
func $a $b

输出:

3

2
3

答案 1 :(得分:2)

您将参数传递给函数,以便它们可以处理不同的参数值。

您的代码未使用传递的参数,它使用全局变量。请考虑一下:

#!/bin/bash

a=2
b=3

func() {
  echo $1
}

func ${a}
func ${b}

收率:

2
3