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

问题描述:

如果我做解析函数参数的目的是什么?

#!/bin/bash 

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

b=3 
func $b 

然后打印2\n3,在那里我会只3预期。

问题

当全局可用的内部功能。在BASH中解析参数的目的是什么?

+0

功能之外声明的变量将永远是全球性的。 – devnull 2013-04-08 13:10:46

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

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

#!/bin/bash 

a=2 
b=3 

func() { 
    echo $1 
} 

func ${a} 
func ${b} 

产量:

2 
3 

击不喜欢这个工作。 你没有在函数中使用任何参数。相反,你刚刚初始化了两个全局变量,你稍后在函数中回应。

为了做你需要,你应该做什么以下几点:

#!/bin/bash 

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

b=3 
func $b 
func $a $b 

输出:

3 

2 
3