unix shell 提示从测试中为变量分配布尔值

unix shell 提示从测试中为变量分配布尔值

在上下文中显示请求的代码(当前为 unix ksh):

r=$( [ -z "foo" ] && echo true || echo false ) 

有没有更好、更简单的方法来分配rtrue 或 false 之类的东西r=$( [ -z "foo" ]) (似乎给出了一个空值)或r=[ -z "foo" ]失败。

答案1

构造[ ... ](或等效的test ...) 返回完成代码 0 (真) 或 1 (假),但它从不生成任何输出,因此$( [ ... ] )始终返回空字符串。返回的完成代码在 中$?,因此r可以通过以下方式将其设置为 0 或 1:

[ -z "foo" ]; r=$?

如果您想要文本值true和(而false不是r0 和 1),那么您的表达式基本上是正确的,但以下稍微简单一些:

[ -z "foo" ] && r=true || r=false

答案2

但这里的情况并非如此:

$ b=false
$ r=$b
$ echo $r
false
$ 

相关内容