如果我这样做
#!/bin/bash
a=2
func() {
echo $a
echo $b
}
b=3
func $b
然后打印2\n3
,我只期望3
。
问题
当函数内部有全局变量时。那么解析BASH中函数的参数的目的是什么?
答案 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