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,

# effectually redirecting both STDERR and STDOUT to /dev/null

echo 'hello' > /dev/null 2>&1

4.0

可以进一步简化为如下:

echo 'hello' &> /dev/null

但是,如果要考虑外壳兼容性,则这种形式在生产中可能是不可取的,因为它与POSIX冲突,引入了解析歧义,并且没有此功能的外壳会误解它:

# Actual code

echo '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

回到顶部