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 | java_check=$(java -version 2>&1) |
扩展
&>file 意思是把标准输出和标准错误输出都重定向到文件file中
/dev/null是一个文件,这个文件比较特殊,所有传给它的东西它都丢弃掉
参考链接