Bash 局部a与局部a的区别=
来自/lib/lsb/init函数(这个文件可能是特定于debian的,但对这个问题来说并不重要): 说什么有什么区别Bash 局部a与局部a的区别=,bash,Bash,来自/lib/lsb/init函数(这个文件可能是特定于debian的,但对这个问题来说并不重要): 说什么有什么区别 local a 及 ?这两种类型都从范围中删除变量的任何外部版本。 =为变量指定一个空值,而裸表单则不设置变量 例如: A=30 B=30 function foo() { local A B= echo A - $A echo B - $B echo A :- ${A:-minusA} echo B :- ${B:-minusB}
local a
及
?这两种类型都从范围中删除变量的任何外部版本。
=
为变量指定一个空值,而裸表单则不设置变量
例如:
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是不同的
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}