两个函数定义,唯一的区别是第一个将localstorage 关键字与赋值组合在一起,而第二个将它们分开:
function foo {
local fn=$(mktemp -p /path/does/not/exist 2>/dev/null)
echo $?
}
function bar {
local fn
fn=$(mktemp -p /path/does/not/exist 2>/dev/null)
echo $?
}
foo
bar
Run Code Online (Sandbox Code Playgroud)
这与“0”然后“1”相呼应。我希望它回声“1”然后是“1”。似乎的值$?是分配给 local 的结果,而不是命令替换的结果。
为什么 bash 4.2.46(1)-release 会这样?
bash ×1