Bash 重定向STDOUT和STDERR
示例
文件描述符像0和1是指针。我们使用重定向更改文件描述符指向的内容。>/dev/null指1指向/dev/null。
首先我们指向1(STDOUT),/dev/null然后指向2(STDERR)指向任何1指向的地方。
# STDERR is redirect to STDOUT: redirected to /dev/null,4.0# effectually redirecting both STDERR and STDOUT to /dev/null
echo 'hello' > /dev/null 2>&1
这可以进一步简化为如下:
echo 'hello' &> /dev/null
但是,如果要考虑外壳兼容性,则这种形式在生产中可能是不可取的,因为它与POSIX冲突,引入了解析歧义,并且没有此功能的外壳会误解它:
# Actual codeecho 'hello' &> /dev/null
echo 'hello' &> /dev/null 'goodbye'
# Desired behavior
echo 'hello' > /dev/null 2>&1
echo 'hello' 'goodbye' > /dev/null 2>&1
# Actual behavior
echo 'hello' &
echo 'hello' & goodbye > /dev/null
注意:&>已知在Bash和Zsh中都能按需工作。
以上是 Bash 重定向STDOUT和STDERR 的全部内容, 来源链接: utcz.com/z/340673.html