本地a和本地a =之间的差异

时间:2010-09-17 09:19:36

标签: bash

来自/ lib / lsb / init-functions的

(也许这个文件是特定于debian的,但对于这个问题并不重要):

pidofproc () {
    local pidfile line i pids= status specified pid
    pidfile=
    specified=

之间的区别
local a

local a=

1 个答案:

答案 0 :(得分:1)

两种类型都从范围中删除任何外部版本的变量。 =为变量赋值空值,而裸表单保留变量unset。

例如:

A=30
B=30

function foo()
{
    local A B=
    echo A - $A
    echo B - $B
    echo A :- ${A:-minusA}
    echo B :- ${B:-minusB}
    echo A :+ ${A:+plusA}
    echo B :+ ${B:+plusB}
    echo A hash ${#A}
    echo B hash ${#B}


    echo A - ${A-minusA}
    echo B - ${B-minusB}
    echo A + ${A+plusA}
    echo B + ${B+plusB}


    ## Modifies variable
    echo A := ${A:=eqA}
    echo B := ${B:=eqB}
    echo A - $A
    echo B - $B
}

foo

输出:

A -
B -
A :- minusA
B :- minusB
A :+
B :+
A hash 0
B hash 0
A - minusA
B -
A +
B + plusB
A := eqA
B := eqB
A - eqA
B - eqB

您可以看到以下部分:

    echo A - ${A-minusA}
    echo B - ${B-minusB}
    echo A + ${A+plusA}
    echo B + ${B+plusB}

与A和B不同。