- 论坛徽章:
- 5
|
关键在于`command`的返值。
简单地说,`command`的返值是最后执行命令的返值。
`command`展开的结果(命令替换的结果)为非空(准确地讲,展开并经shell解释后有字)时,把第一个字,如firstword,当作命令解释并执行,最后执行的命令是firstword。`command`的真假与firstword的真假相同。
`command`展开的结果为空时,最后执行的命令是command。`command`的真假与command的真假相同。
当存在文件core时,
`ls core` 展开的结果为core,再执行core,不存在这个命令,core的执行结果为假。所以`ls core`的返值为假。
`ls core > /dev/null`的展开结果为空, 最后执行的命令是ls core > /dev/null, 它的返值为真。所以`ls core >
/dev/null`的返值为真。
当不存在文件core时,
`ls core` 展开的结果为空,最后执行的命令为ls core, 它的返值为假。所以`ls core`的返值为假。
`ls core > /dev/null`的展开结果为空, 最后执行的命令是ls core > /dev/null, 它的返值为假。所以`ls core >
/dev/null`的返值为假。
可见"存在core"与`ls core>/dev/null/`的真假相同。
[ 本帖最后由 blackold 于 2009-9-16 09:30 编辑 ] |
|