ls /tmp; [[ $# -eq 0 ]] && echo True || echo Fail
ls /tmp; [[ $* -eq 0 ]] && echo True || echo Fail
ls /tmp; [[ $0 -eq 0 ]] && echo True || echo Fail
ls /tmp; [[ $? -eq 0 ]] && echo True || echo Fail
-eq | 等于 |
-ne | 不等于 |
-gt | 大于 |
-lt | 小于 |
ge | 大于等于 |
le | 小于等于 |
正确答案是 D。
选项 A 中的$#表示命令行参数个数,而不是上一条命令执行结果的状态码。
选项 B 中的$*表示所有命令行参数的字符串,而不是上一条命令执行结果的状态码。
选项 C 中的$0表示脚本名字,而不是上一条命令执行结果的状态码。
选项 D 中的$?表示上一条命令执行的状态码,如果状态码为 0,表示命令执行成功,否则表示执行失败。因此这个选项是正确的。