Bash:具有相同名称的局部变量

时间:2019-12-09 15:37:22

标签: bash

我想避免使用全局变量来防止脚本的意外行为,并且我发现bash中存在局部变量。通过测试局部变量,我发现:

此代码有效。

#!/bin/bash
foo() {
    local a=$1
    let a=$a+5
    let $2=a
}

boo() {
    local b
    foo 5 b
    echo "$b"
}

boo # Will print 10

但是此其他代码不起作用。

#!/bin/bash
foo() {
    local a=$1
    let a=$a+5
    let $2=a
}

boo() {
    local a
    foo 5 a
    echo "$a"
}

boo # Will print blank

为什么会这样?

然后,即使具有局部变量,我是否也必须为所有变量使用不同的名称?

那我使用局部变量而不是全局变量会得到什么?

0 个答案:

没有答案