在上下文中显示请求的代码(当前为 unix ksh):
r=$( [ -z "foo" ] && echo true || echo false )
有没有更好、更简单的方法来分配r
true 或 false 之类的东西r=$( [ -z "foo" ])
(似乎给出了一个空值)或r=[ -z "foo" ]
失败。
答案1
构造[ ... ]
(或等效的test ...
) 返回完成代码 0 (真) 或 1 (假),但它从不生成任何输出,因此$( [ ... ] )
始终返回空字符串。返回的完成代码在 中$?
,因此r
可以通过以下方式将其设置为 0 或 1:
[ -z "foo" ]; r=$?
如果您想要文本值true
和(而false
不是r
0 和 1),那么您的表达式基本上是正确的,但以下稍微简单一些:
[ -z "foo" ] && r=true || r=false
答案2
但这里的情况并非如此:
$ b=false
$ r=$b
$ echo $r
false
$