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)有内容。