linux centos7 命令中的 2>&1 代表的意义

2021-09-01

1. 参数介绍

0 – stdin (standard input) 标准输入
1 – stdout (standard output) 标准输出
2 – stderr (standard error) 标准错误输出

 

2. 实例

实例一、 编写一个语法错误的脚本,将执行结果使用三种输出方式输出到 log 文件中

# if 的架构
if [ 条件 ];
then
    操作
fi

# 脚本的内容
a=10

if  a -nq 0]
then
        echo $a
fi

尝试以下三种执行方法

sh ../scripts/test.sh>> ../log/log_`date '+%Y%m%d'`.log

sh ../scripts/test.sh>> ../log/log_`date '+%Y%m%d'`.log 1

sh ../scripts/test.sh>> ../log/log_`date '+%Y%m%d'`.log 2>&1

从上面的测试可以看出 sh ../scripts/test.sh>> ../log/log_`date '+%Y%m%d'`.log 等价于 sh ../scripts/test.sh>> ../log/log_`date '+%Y%m%d'`.log 1 

2>&1 就是将标准错误(2)重定向到标准输出(&1),标准输出(&1)再被重定向输入到 .log 文件中,即只将错误信息输出到日志中

 

实例二、 编写一个语法正确的的脚本,将执行结果使用三种输出方式输出到 log 文件中

# 脚本内容
a=10

if [ -n $a ];
then
        echo $a
fi

 

  测试得出,脚本能正确执行时三种输出方式结果一样,因为此时标准错误(2)没有内容,标准输出(&1)有内容。

 

posted @ 2021-09-01 17:43  元月二一  阅读(427)  评论(0编辑  收藏  举报