问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何在一个shell程序中取消重定向

发布网友 发布时间:2022-05-19 05:55

我来回答

1个回答

热心网友 时间:2023-10-03 04:06

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

这篇文章主要介绍了shell脚本中取消重定向的方法实例,本文直接给出代码实例,需要的朋友可以参考下

在上一篇关于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


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


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

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
WIN7不会自动安装AHCI驱动是怎么回事?每次重装系统后都得我自己安装_百... 钉钉录播课能否查看观看时长 为什么城市轨道要有身高条件 城轨交通运营管理专业现身高吗 城市轨道交通运营管理这个专业是否有身高要求 读城轨专业需要什么条件 学习城轨专业需要什么条件? 城市轨道专业最低的身高要求多少?身高158毕业出来好找工作吗? 城轨专业要求身材吗 城轨专业有身高限制吗 Broken pipe一般都是什么原因导致的错误 linux Write failed: Broken pipe一般都是什么原因导致的错误? linux下,用c语言写出自己版本的tee,命名为t2 用C++编写tee,命名为t2+ 执行一个Shell命令时通常会自动打开几个文件,分别是什么 请大侠看一下,grep:write error:Broken pipe错误,是怎么回事 C语言 select函数,第一个参数,为什么需要最大文件描述符加1 192.168.11的管理员密码?中国电信 手机192.168.11要管理员密码 深色新牛仔裤掉色怎么办? 首先汤老师下午好,我就想问一下女孩子头发干枯应该怎么办? 淘宝退款怎样可以成功? 汤过的头发怎么打理 头发烫染后枯燥 烫过头发后,头发开衩、干枯、还有头屑、头痒,怎么办啊? 在淘宝应该怎样退款才能保证一定能成功 烫完头发后相当不满意,而且头发还变得很干,想恢复以前的直发,该怎么办? 头发烫后枯得厉害?该怎么办?具体一点 谢了 淘宝怎样才会退款成功 征途补天神石怎么得到的? 伏魔英雄传 (国庆修正版)的大补天神石哪里打? 终端文件描述符 北京饭店的门市价和前台价是什么意思? 一个文件和一个文件描述符是不是一一对应 经常在提问中看到“京东总价”这个词,它的意思是电脑的批发价还是?? 京东令牌价是什么 第二代酷睿i5-2450M GT630独立显示芯片 4GB内存 500G硬盘。电脑反应慢,什么原因 奥利奥广告词,扭一扭,舔一舔,泡一泡,英文版的是怎么写的? 微视用身份证实名认证后,是用登录的,如果在其他手机上用微信登录微视,提现需要第二次实名认证吗 涸辙之鲋的读音 涸辙之鲋引申出成语 我妈妈去世十多年了我老梦见和她吵架什么意思 涸辙之鲋的近、反成语 金毛犬幼犬价格,还有成年的 想养只金毛犬,该怎样挑选金毛幼犬呢? 虎牙平台是谁创建的? 如何开展“红领巾相约中国梦”活动 每个人都有属于自己的梦,每个人的梦又与国家民族兴衰荣辱紧密相连。少年梦,则*,少年强,则中国强 跪求,跪求《我的*》主题活动的策划方案,给我一个大概的活动流程框架,时间一个小时以上就行 ”中国梦教育梦我的梦”内容有哪些? 中国梦云南篇内容是什么