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

<1>

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

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

[[email protected] test]# ls 2>a2>&2           等同于     #ls  >a2

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

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

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

[[email protected] test]# ls 2>a3
a1 a2 a3 core txt
[[email protected] test]# ls
a1 a2 a3 core txt
[[email protected] test]# cat a3

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

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

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

第四种情况:

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

第五种情况:

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

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

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

 

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

时间: 2024-10-04 12:17:06

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

xargs 重定向输出 示列分析

xarge参数的意义,请自行搜索. abc.txt 文件内容如下: /home/wufa/num_file1 /home/wufa/num_file2 其中num_file1和num_file2每行包括一个数字 cat abc.txt | xargs -i -n 1 -P 20 sh -c "grep "23" {} > {}.log " 从abc.txt 中每次读取一行,作为grep的参数,由{} 替代. 并将读取后匹配的数字内容,生成大小为0字节的 数字.

工程师技术(五):Shell脚本的编写及测试、重定向输出的应用、使用特殊变量、编写一个判断脚本、编写一个批量添加用户脚本

一.Shell脚本的编写及测 目标: 本例要求两个简单的Shell脚本程序,任务目标如下: 1> 编写一个面世问候 /root/helloworld.sh 脚本,执行后显示出一段话"Hello World!!"   2> 编写一个能输出系统信息的 /root/sysinfo 脚本,执行后依次输出当前红帽系统的版本信息.当前使用的内核版本.当前系统的主机名 方案: 规范Shell脚本的一般组成: 1> #! 环境声明(Sha-Bang)    2> # 注释文本 

运维经验分享(六)-- 深究crontab不能正确执行Shell脚本的问题(二)

运维经验分享作为一个专题,目前共7篇文章 <运维经验分享(一)-- Linux Shell之ChatterServer服务控制脚本> <运维经验分享(二)-- Linux Shell之ChatterServer服务控制脚本二次优化> <运维经验分享(三)-- 解决Ubuntu下crontab不能正确执行Shell脚本的问题(一)> <运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析> <运维经验分享(五)-- 改进的java进程管

crontab常见错误(执行python脚本 no module)

在crontab定时执行python脚本,在shell下没有问题,在crontab中报no module,找不到安装的库. 1 crond服务未启动 crontab不是Linux内核的功能,而是依赖一个crond服务,这个服务可以启动当然也可以停止.如果停止了就无法执行任何定时任务了,解决的方法是打开它: crond 或 service crond start 如果提示crond命令不存在,可能被误删除了,CentOS下可以通过这个命令重新安装: yum -y install crontabs

ORA-02266错误的批量生成脚本解决方案

原文:ORA-02266错误的批量生成脚本解决方案 ORA-02266: unique/primary keys in table referenced by enabled foreign keys这篇博客是很早之前总结的一篇文章,最近导数时使用TRUNCATE清理主表数据又遇到了这个错误,发现还有其它解决方案: a) 禁用与主表相关的外键约束 b) TRUNCATE TABLE c) 启用那些外键约束. 在实际操作中,发现使用上面的流程操作虽然正确,但是要写很多脚本,有些主表中的字段可能是多

Xdebug文档(六) 分析PHP脚本

分析PHP脚本Xdebug内置分析器能让你找到脚本中的瓶颈并用额外的工具诸如KcacheGrind或WinCacheGrind工具可视化. 介绍 Xdebug分析器是分析PHP代码和判断瓶颈或确定代码哪里运行过慢需要使用加速器的强大分析器.Xdebug2的分析器输出信息以cachegrind兼容文件形成表现.这能让你使用优秀的KcacheGrind工具(Linux,KDE)来分析数据.如果你用Linux你可以在你安装管理器安装它. Windows下也有预编译的QcacheGrind二进制安装包可

python分析日志脚本

1 #!/usr/bin/env python 2 # coding:utf-8 3 4 import sys,time 5 6 class DisplayFormat(object): 7 8 def format_size(self,size): 9 KB = 1024 # KB -> B 1024 10 MB = 1048576 # MB -> B 1024 * 1024 11 GB = 1073741824 # GB -> B 1024 * 1024 * 1024 12 TB =

Python获取脚本所在目录的正确方法

http://www.jb51.net/article/49035.htm 文章主要介绍了Python获取脚本所在目录的正确方法 1.以前的方法 如果是要获得程序运行的当前目录所在位置,那么可以使用os模块的os.getcwd()函数. 如果是要获得当前执行的脚本的所在目录位置,那么需要使用sys模块的sys.path[0]变量或者sys.argv[0]来获得.实际上sys.path是Python会去寻找模块的搜索路径列表,sys.path[0]和sys.argv[0]是一回事因为Python会

IOS逆向分析——GL脚本的提取

总结:要逆一个程序必须清楚地知道程序的结构和常用的API函数,不清楚一个程序而去逆出结果是不可能滴 首先是glsl脚本运行的全过程,第一步是为shader的运行创建一个容器GLuint glCreateProgram(void),第二步是把编译好的shader附加到程序void glAttachShader(GLuint program, GLuint shader),编译好的shader可以是多个所以第二步可以重复多步把每一个编译好的一一附加到程序,顶点shader和像素shader一一成对,