脚本重定向输出【错误、正确】——分析service脚本中用到的语法

<1>

>&2 1>&2 也就是把结果输出到和标准错误一样之前如果有定义标准错误重定向到某log文件,那么标准输出也重定向到这个log文件
如:ls 2>a1 >&2 (等同 ls >a1 2>&1)
把标准输出和标准错误都重定向到a1,终端上看不到任何信息。

第一种情况:标准正确输出(有>&2)====》

[root@slave1 test]# ls 2>a2>&2           等同于     #ls  >a2

[root@slave1 test]# ls
a1 a2 core txt
[root@slave1 test]# cat a2     //ls输出的是标准正确输出,(2>a2)之前如果有定义标准错误重定向到某log文件,那么标准输出也重定向到这个log文件(>&2)
a1
a2
core
txt

----------------------------------------------------------------------------------------------------------------------------

第二种情况:标准正确输出(无>&2)====》

[root@slave1 test]# ls 2>a3
a1 a2 a3 core txt
[root@slave1 test]# ls
a1 a2 a3 core txt
[root@slave1 test]# cat a3

----------------------------------------------------------------------------------------------------------------------------

第三种情况:标准错误输出(>&2)====》

[root@slave1 test]# ls
core txt
[root@slave1 test]# ls sdfji 2>a1 >&2
[root@slave1 test]# ls
a1 core txt
[root@slave1 test]# cat a1
ls: cannot access sdfji: No such file or directory          //2即标准错误输出.

第四种情况:

[root@slave1 test]# ls >a2 >&2         //有>&2则正确输出不会重定向到文件.
a1 a2 core txt

第五种情况:

[root@slave1 test]# ls &>a2 >&2           //这个情况和第1种情况相同(在是标准错误输出时),(在是标准正确输出时)和第四种情况相同.
[root@slave1 test]# ls
a1 a2 core txt
[root@slave1 test]# cat a2
a1
a2
core
txt

----------------------------------------------------------------------------------------------------------------------------

总结:加上>&2 表示之前如果是"标准错误重定向"到某log文件,那么"标准正确输出"也重定向到这个log文件;如果是"标准正确重定向"到某文件,则不会重定向到这个log文件,“标准正确输出”会正常输出.          //即之前是错误的,现在正确也记录到里面;之前是正确的,现在也正确输出.

 

代码示例请参考下一篇《service xx status》之service脚本解析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值