0%

Shell 2>&1 用法

Shell 2>&1 用法


介绍

在Shell脚本中,默认情况下,总是有三个文件处于打开状态,标准输入(键盘输入)、标准输出(输出到屏幕)、标准错误(也是输出到屏幕),它们分别对应的文件描述符是0,1,2 。

> 默认为标准输出重定向,与 1> 相同

2>&1 意思是把 标准错误输出 重定向到 标准输出

同理 1>&2 意思是将标准输出 重定向到 标准错误输出

运用

遇到一个问题需要批量扫描机器的JDK版本是不是为1.8的,遇到无法在’java -version’输出中使用grep和awk的情况

出现这样的问题,主要就是这些消息默认情况下转到stderr,而不是stdout。所有需要先重定向到stdout,然后才能进行此类操作。

将stderr重定向到stdout

1
2
3
4
java_check=$(java -version 2>&1)

echo $java_check | grep 1.8.0_265-b01
OpenJDK Runtime Environment Corretto-8.265.01.1 (build 1.8.0_265-b01)

扩展

&>file 意思是把标准输出和标准错误输出都重定向到文件file中

/dev/null是一个文件,这个文件比较特殊,所有传给它的东西它都丢弃掉


参考链接