Linux 关闭stdout和stderr(1>;&;-2>;&;-)是否修改退出状态?
是否执行Linux 关闭stdout和stderr(1>;&;-2>;&;-)是否修改退出状态?,linux,bash,Linux,Bash,是否执行ls-l/path/to/dir/*.extension 1>&-2>&- 即使存在扩展名为.extension的文件,还是将退出状态设置为2,或者我犯了什么错误 通过执行1>&-2>&-我知道我正在关闭命令的stdout和stderr,它不应该与命令的退出状态有关 但正如人们所期望的那样,以下方法总是非常有效: ls -l /path/to/dir/*.extension &>/dev/null 退出状态为预期的0 只是想为这种行为寻找解释 #理解 根据Simon Ri
ls-l/path/to/dir/*.extension 1>&-2>&-
即使存在扩展名为.extension
的文件,还是将退出状态设置为2
,或者我犯了什么错误
通过执行1>&-2>&-
我知道我正在关闭命令的stdout和stderr,它不应该与命令的退出状态有关
但正如人们所期望的那样,以下方法总是非常有效:
ls -l /path/to/dir/*.extension &>/dev/null
退出状态为预期的0
只是想为这种行为寻找解释
#理解
根据Simon Richter给出的答案:
如果我们这样做
jordan-a@hosties:exp$ echo "Life" 1>&-
-bash: echo: write error: Bad file descriptor
它抛出错误,因为echo无法写入标准输出和
如果我们这样做
jordan-a@hosties:exp$ echo "Life" 1>&- 2>&-
我们甚至不知道错误,直到我们检查
$?
您正在关闭文件描述符时,程序将在尝试写入它们时出错,并将该错误告知您
如果将输出重定向到
/dev/null
,则写入成功,并且ls
不知道输出已被丢弃。您正在关闭文件描述符,因此程序在尝试写入它们时将出错,并将该错误告知您
如果将输出重定向到/dev/null
,则写入成功,ls
不知道输出已被丢弃