首页 > 解决方案 > bash中的“只读”退出状态

问题描述

我正在尝试将命令的输出分配给变量并捕获状态。它按预期工作:

$ foo=$(false); echo $?
1

直到我试图使只读变量:

$ readonly foo=$(false); echo $?
0

我知道我可以拥有临时 rw 变量,然后将其分配给 ro 变量,但我很失望。;) 有更优雅的方式吗?

标签: bash

解决方案


您可以分两步完成,而不需要临时变量:

foo="$(false)"
echo $?
readonly foo

或者你可以做

readonly foo="$(false)" status="$?"

同时捕获输出和退出状态。


推荐阅读