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

 更新时间:2015年03月18日 11:08:08   投稿:junjie  
这篇文章主要介绍了shell脚本中取消重定向的方法实例,本文直接给出代码实例,需要的朋友可以参考下

在上一篇关于shell编程的例子中,有讲到把shell脚本进行扩展之后重定向到一个文件中,以便进行查看和调试https://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


在函数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


看到结果了吗??? 没看到么??? 那就仔细看了,^_^

相关文章

  • 详解Linux中退出编辑模式的命令

    详解Linux中退出编辑模式的命令

    这篇文章主要介绍了Linux中退出编辑模式的命令,本文给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-05-05
  • linux中编写自己的并发队列类(Queue 并发阻塞队列)

    linux中编写自己的并发队列类(Queue 并发阻塞队列)

    这篇文章主要介绍了linux中编写并发队列类,功能有:并发阻塞队列、有超时限制、有大小限制
    2013-12-12
  • 浅谈shell脚本中的控制流结构

    浅谈shell脚本中的控制流结构

    今天小编就为大家分享一篇关于浅谈shell脚本中的控制流结构,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • Linux Shell简介

    Linux Shell简介

    本文编译整理时对相关章节做了相应的删改处理,去掉了针对Mandrake Linux的部分内容
    2013-06-06
  • shell脚本 自动创建用户详解及实例代码

    shell脚本 自动创建用户详解及实例代码

    这篇文章主要介绍了shell脚本 自动创建用户详解及实例代码的相关资料,需要的朋友可以参考下
    2017-03-03
  • Linux sort 命令快速上手指南

    Linux sort 命令快速上手指南

    作为运维工程师,处理日志、分析数据是家常便饭,sort命令是Linux中高效整理文本的神器,能快速对文件内容排序、去重、统计,本文用最简洁的方式,帮你掌握sort的核心用法,感兴趣的朋友一起看看吧
    2025-03-03
  • 详解Sed命令的用法与正则表达式元字符

    详解Sed命令的用法与正则表达式元字符

    sed是一种流编辑器,它是文本处理中非常有用的工具,能够完美的配合正则表达式使用,功能不同凡响。这篇文章主要介绍了Sed命令使用与正则表达式元字符,需要的朋友可以参考下
    2017-12-12
  • Shell中的变量使用小结

    Shell中的变量使用小结

    这篇文章主要介绍了Shell中的变量使用小结,本文总结了变量的语法、常见使用形式等内容,并分别给出代码示例,需要的朋友可以参考下
    2015-05-05
  • Idea使用Bashsupport插件编辑Shell脚本的方法

    Idea使用Bashsupport插件编辑Shell脚本的方法

    这篇文章主要介绍了Idea插件之——Bashsupport编辑Shell脚本的相关知识,功能非常齐全有检查错误并且还可以在idea中直接运行shell脚本,本教程带领大家一步步演示插件的安装和配置,需要的朋友可以参考下
    2021-05-05
  • Shell脚本遍历一个日期范围实例

    Shell脚本遍历一个日期范围实例

    这篇文章主要介绍了Shell脚本遍历一个日期范围实例,本文直接给出实现代码,需要的朋友可以参考下
    2015-03-03

最新评论