考虑以下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
如何使错误无声并获取错误代码?
答案 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。