相关疑难解决方法(0)

为什么本地 fn=$(...) 掩盖了 $?状态码

两个函数定义,唯一的区别是第一个将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

5
推荐指数
1
解决办法
533
查看次数

标签 统计

bash ×1