• 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脚本的执行流程及变量的值

shell脚本实现监控shell脚本的执行流程及变量的值

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

junjie 通过本文主要向大家介绍了shell脚本定义变量,shell脚本变量赋值,shell脚本变量,shell脚本中定义变量,shell脚本设置变量等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

很多时候,我们都会写shell程序来完成一些不用重复造轮子的时刻,但是,又因为shell语句中也会有函数,也会有变量,在运行后到底执行了哪些相关的操作,就需要对具体执行过程中的变量等可变的因素的监控,那么我们下面就写个小小的shell例子,来完成这个对执行过程中条件语句中的变量的变化的监控和整个程序的执行流程的观察。

shell程序代码:
#!/bin/bash
function setlogfile
{
    if ! [ -z "$1" ]; then
        echo "logfilename is not empty!" >> kthh
        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
/sbin/shutdown -k 10
if [ $num1 -eq 0 ]; then
    echo "num1 is 0 again">> ${logfile}
fi
</div>
在命令行中执行:
[root@UFO shellprogram]# ./testexecutelog.sh 0 msglog execlog
</div>
在以上的shell脚本程序中 num1对应的值为命令行中的0  logfile的值为msglog  execlogfile的值为execlog。

函数 setlogfile的使用为 setlogfile 日志文件名,在例子中的使用setlogfile ${execlogfile},函数中的exec 2>> $1;exec 1>> $1表示把标准输出和标准错误输出的信息都重定向到execlog文件中。

下面我们来看看execlogfile中的内容,就可以看到shell程序的执行流程和执行过程中的变量的值的变化。
[root@UFO shellprogram]# cat execlog
+ '[' 0 -eq 0 ']'
+ echo 'num1 is 0'
+ /sbin/shutdown -k 10
+ '[' 0 -eq 0 ']'
+ echo 'num1 is 0 again'
</div>
可见,程序中的流程是和./testexecutelog.sh后的第一个参数决定的。你还可以把第一个参数改为大于0的或小于0的值进行测试。

其中,最重要的一句是set -x,此句的含义为:在每个简单命令被扩展之后,显示PS4扩展值,之后是要执行的命令 。 若不执行这句,则不会将执行中变量的实际值打印到execlog中。有关set的使用可man set了解更多。

注意:exec 在对文件描述符进行操作的时候,也只有在这时,exec 不会覆盖你当前的 shell 环境。也即是不会启动个新的进程。

</div>

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

  • Shell脚本中的位置变量参数(特殊字符)实例讲解
  • shell脚本实现监控shell脚本的执行流程及变量的值
  • Shell脚本中判断变量为数字的3种方法
  • Shell脚本中判断输入变量或者参数是否为空的方法
  • Shell脚本函数定义和函数参数
  • Shell脚本定义变量和重新赋值

相关文章

  • 使用Bash Shell检查文件是否存在的方法
  • 如何正确使用Linux命令–du
  • getcwd cannot access parent directories错误解决方法
  • vtune自动化安装脚本
  • 使用bash shell删除目录中的特定文件的3种方法
  • Linux下查看.so和可执行文件是否debug编译的方法(必看)
  • 使用curl递归下载软件脚本分享
  • Bash的For循环(根据每次递增的数)
  • linux下实现ftp自动备份shell脚本
  • shell学习教程获取命令行参数示例

文章分类

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

最近更新的内容

    • Shell脚本查看进程内存真实占用情况
    • 用来记录登录后使用命令的shell脚本
    • Shell脚本实现分析apache日志中ip所在的地区
    • 利用perl、python、php、shell、sed、awk、c 实现字符串的翻转
    • Linux SHELL if命令参数说明
    • 分享awk变量$0的妙用
    • shell脚本实现分日志级别输出的方法
    • Linux命令每天必学(55)之traceroute命令
    • Cygwin下安装vim后,vim中退格键无法正常使用的解决方法
    • 使用Shell 脚本实现每隔100行插入一条记录且记录第一列包含行号其他列不变

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

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