如何重定向重定向错误

时间:2016-05-25 16:15:20

标签: bash io-redirection

考虑以下shellcript:

#!/bin/bash
echo test > /usr/lib/permDenied 2>&1 > /dev/null 
echo $?

这给了我以下错误:

$ ./test.sh 
./test.sh: line 2: /usr/lib/permDenied: Permission denied
1

如何使错误无声并获取错误代码?

1 个答案:

答案 0 :(得分:-1)

搜索可以找到这个,但这里解释了为什么它不适用于未来。

echo test > /usr/lib/permDenied 2>&1 > /dev/null

You first assign STDOUT to a file (STDOUT -> file) 
You then assign STDERR to STDOUT (STDOUT -> file; STDERR -> file) 
You then assign STDOUT to /dev/null (STDOUT ->/dev/null; STDERR -> file)

您无法写入该文件,因此bash的STDERR仍会转到STDERR。