【发布时间】:2017-05-31 04:34:21
【问题描述】:
嗨,谁能帮我用布尔形式写表达式,现在无法执行。这里 stat_1 和 stat_2 是两个空字符串
我最大的努力是:
[ [ "$stat_1" -a "$stat_2" ] && [ $stat_1 -eq 5 -a $stat_2 -eq 0 ] ]
【问题讨论】:
-
这里$stat_1和$stat_2是两个空字符串
嗨,谁能帮我用布尔形式写表达式,现在无法执行。这里 stat_1 和 stat_2 是两个空字符串
我最大的努力是:
[ [ "$stat_1" -a "$stat_2" ] && [ $stat_1 -eq 5 -a $stat_2 -eq 0 ] ]
【问题讨论】:
我假设您想测试 stat_1 等于 5,stat_2 等于 0。
这可以通过这种方式简单地完成:
[ "$stat_1" = 5 ] && [ "$stat_2" = 0 ]
您可以使用 -a 在单个括号中执行测试,但我发现使用两组括号表达式更简洁,每组只有一个测试。
最好将变量放在引号内,否则如果它们包含空格(这会扩展为括号内的其他参数),您可能会得到不需要的结果。
如果您使用 bash,则可以访问双括号条件:
[[ "$stat_1" = 5 ]] && [[ "$stat_2" = 0 ]]
它们做同样的工作,但它们内置在 shell 中,并提供一些额外的功能,尤其是我经常使用的模式匹配 =~。
【讨论】:
[[1 == 1 && 2 == 2]]。