0 bash
尽管函数处于退出状态,但测试用例还是失败了:
#!/bin/bash
fun() {
return 0
}
fun && echo "true" || echo "false" #result: true
[[ `fun` ]] && echo "true" || echo "false" #result: false
Run Code Online (Sandbox Code Playgroud)
使用 echo 命令测试我们可以看到退出状态并没有像我们预期的那样改变结果:
#!/bin/bash
echo "orange" 1>/dev/null && echo "true" || echo "false" #result: true
[[ `echo "orange "` ]] && echo "true" || echo "false" #result: true
echo 1>/dev/null && echo "true" || echo "false" #result: true
[[ `echo ` ]] && echo "true" || echo "false" #result: false
Run Code Online (Sandbox Code Playgroud)
什么会导致这种行为?
使用反引号,您可以获得函数的输出。没有输出。该测试[[ "" ]]为“false”,因为它测试了单个字符串参数的非空性。
查看help testbash 提示符,我们看到:
String operators:
-z STRING True if string is empty.
-n STRING
STRING True if string is not empty. <== this is you
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |