考虑以下shellscript:
#!/bin/bash
echo test > /usr/lib/permDenied 2>&1 > /dev/null
echo $?
这给了我以下错误:
$ ./test.sh
./test.sh: line 2: /usr/lib/permDenied: Permission denied
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。