0

如果我做

#!/bin/bash

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

b=3
func $b

然后它会打印出来2\n3,我只会在其中预期3

问题

当全局变量在函数内部可用时。那么在 BASH 中将参数解析为函数的目的是什么?

4

2 回答 2

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
于 2013-04-08T13:12:45.403 回答
2

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

您的代码没有使用传递的参数,而是使用了全局变量。改为考虑:

#!/bin/bash

a=2
b=3

func() {
  echo $1
}

func ${a}
func ${b}

产量:

2
3
于 2013-04-08T13:11:32.993 回答