千家信息网

如何配置shell脚本中取消重定向

发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,这篇文章主要讲解了"如何配置shell脚本中取消重定向",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何配置shell脚本中取消重定向"吧!代码如下:
千家信息网最后更新 2025年11月10日如何配置shell脚本中取消重定向

这篇文章主要讲解了"如何配置shell脚本中取消重定向",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何配置shell脚本中取消重定向"吧!

代码如下:

#!/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

感谢各位的阅读,以上就是"如何配置shell脚本中取消重定向"的内容了,经过本文的学习后,相信大家对如何配置shell脚本中取消重定向这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

文件 输出 标准 脚本 配置 规则 学习 两个 代码 内容 就是 显示器 函数 变量 思路 情况 文章 更多 知识 知识点 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 核心期刊遴选数据库官网 学生网络安全mv 天津网络安全保卫大队 sock5服务器多少钱 海康服务器网络接哪一个口 软考数据库系统工程师练习题 徐汇区特殊软件开发应用范围 少先队员网络安全手抄报 学成软件开发得几年 4实施的网络安全法 关于数据库的特点的是什么 数据库管理员的就业发展 幸存者挑战服务器检测失败 网络安全工程师做什么工作 计算机软件开发培训多少钱 游戏版本低无法连接服务器 第六届深圳市网络安全宣传周开启 学校校园网服务器一般属于什么服务器 环世界 环境数据库 腾讯管家服务器登录不上 公司的admin手机登录服务器 正仑网络技术公司 网络安全手抄报怎样制作 湖南软件开发自考 怎么把建筑复制到服务器 江北区技术刀片服务器售后服务 数据库管理实验商品采购管理系统 昆明方便软件开发价格走势 dns服务器怎么工作 联通宽带 无法连接服务器
0