如果我做
#!/bin/bash
a=2
func() {
echo $a
echo $b
}
b=3
func $b
然后它会打印出来2\n3
,我只会在其中预期3
。
问题
当全局变量在函数内部可用时。那么在 BASH 中将参数解析为函数的目的是什么?
Bash 不是这样工作的。您没有在函数内部接受任何参数。相反,您只是初始化了稍后在函数中回显的两个全局变量。
为了执行您需要的操作,您应该执行以下操作:
#!/bin/bash
a=2
func() {
# first argument
echo $1
# second argument
echo $2
}
b=3
func $b
func $a $b
输出:
3
2
3
您将参数传递给函数,以便它们可以处理不同的参数值。
您的代码没有使用传递的参数,而是使用了全局变量。改为考虑:
#!/bin/bash
a=2
b=3
func() {
echo $1
}
func ${a}
func ${b}
产量:
2
3