• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >linux shell > shell脚本中取消重定向的方法实例

shell脚本中取消重定向的方法实例

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了shell脚本重定向,shell脚本实例,shell脚本编程实例,linux shell脚本实例,经典shell脚本实例等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

在上一篇关于shell编程的例子中,有讲到把shell脚本进行扩展之后重定向到一个文件中,以便进行查看和调试http://www.jb51.net/article/62435.htm。但是,若是有另一种情况:只是在某些地方进行重定向,而其他地方不进行重定向。那么我们就来修改一下上一篇中的例子来进行这种需求的满足:
#!/bin/bash
function setlogfile
{
    if ! [ -z "$1" ]; then
        echo "logfilename is not empty!" >> kthh
        exec 3>&1
        exec 4>&2
        exec 2>> $1
        exec 1>> $1
    fi   
}

num1=$1
logfile=$2
execlogfile=$3

setlogfile ${execlogfile}
set -x
if [ $num1 -eq 0 ]; then
    echo "num1 is 0">> ${logfile}
elif [ $num1 -ge 0 ]; then
    echo "num1 is grate 0">> ${logfile}
else
    echo "num1 is less 0">> ${logfile}
fi
exec 2>&4
exec 1>&3
if [ $num1 -eq 0 ]; then
    echo "num1 is 0 again">> ${logfile}
fi
</div>
在函数setlogfile中添加了exec 3>&1;exec 4>&2这两句,而其中,3、1、4、2都是表示文件描述符,1是标准输出,也即是STDOUT,2是标准错误输出,即是STDERR,1和2本来是输出在显示器上的,而3、4是表示两个文件描述符,可理解成是两个保存1和2的临时变量, 3>&1表示把文件描述符1的赋值给文件描述符3,也可以理解为是把文件描述符1(当前标准输出)的规则保存到了文件描述符3中,这时再把1的输出重定向到文件中,在下面的shell程序中,我们又使用了1>&3这就表示是把保存在文件描述符3中的原标准输出的规则重新赋值给文件描述符1,原来标准输出的规则是输出到显示器上,而不是输出到一个文件中。这就是整个重定向和取消重定向还原的过程。2和4也是一样的道理。

闲话少说,先看运行结果:
[root@UFO shellprogram]# ./testexecutelog.sh 0 msglog execlog
+ exec
+ '[' 0 -eq 0 ']'
+ echo 'num1 is 0 again'

[root@UFO shellprogram]# cat execlog
+ '[' 0 -eq 0 ']'
+ echo 'num1 is 0'
+ exec
</div>
看到结果了吗??? 没看到么??? 那就仔细看了,^_^

</div>

您可能想查找下面的文章:

  • Shell脚本去重的几种方法实例
  • shell脚本中取消重定向的方法实例
  • Shell脚本批量重命名文件后缀的3种实现
  • Shell脚本批量重命名文件后缀的3种实现

相关文章

  • C语言实现的ls命令源码分享
  • 一个下载网页图片的shell脚本
  • Linux Shell中三种引号的用法及区别
  • 控制输出颜色的shell脚本
  • Shell使用Epoch进行日期时间转换和计算的几个小函数
  • iredmail下安装脚本分析(一)---get_all.sh 文件所在目录为PKGS
  • unix编程创建前缀固定的临时文件代码分享
  • 浅谈ubuntu 中sudo update与upgrade的作用及区别
  • 常用Linux Shell进阶部分小结
  • Shell 命令替换的两种方式

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Shell时间(date)相关命令
    • shell脚本学习与总结
    • linux基础之Shell Script入门介绍
    • linux 中vim的用法讲解
    • linux shell自定义函数(定义、返回值、变量作用域)介绍
    • 设置Linux系统的空闲等待时间TMOUT的方法
    • Shell正则表达式之grep、sed、awk实操笔记
    • shell编程基础知识小结
    • Shell编程中的特殊变量之位置变量介绍
    • bash脚本中if语句的使用方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有