当前位置:  操作系统/服务器>linux

用内置变量调试shell脚本的方法

    来源: 互联网  发布时间:2014-10-16

    本文导语:  一般的shell脚本的调试基本都是echo 来处理遇到比较大的脚本的时候,就比较麻烦了,出了问题,还不是很好定位哪行代码出问题了。其实shell内置的一些变量可以很好的解决这个问题: $LINENO  $FUNCNAME $BASH_LINENO 这几个变量记录...

一般的shell脚本的调试基本都是echo 来处理遇到比较大的脚本的时候,就比较麻烦了,出了问题,还不是很好定位哪行代码出问题了。
其实shell内置的一些变量可以很好的解决这个问题:
$LINENO  $FUNCNAME $BASH_LINENO 这几个变量记录了脚本当前的执行位置,以及正在执行的函数。具体可以可以man 文档页。

实例代码:a.sh

代码如下:
#!/bin/bash
abc() {
echo "wo shi abc()"
echo  "func: $FUNCNAME  ln: $LINENO ln2:${BASH_LINENO[1]} brother: ${FUNCNAME[1]}"
}

b.sh:
代码如下:
#!/bin/bash
../a.sh
abc
cdf() {
abc
}


执行结果:
[root@node2 ~]# ./b.sh
[code]wo shi abc()
func: abc  ln: 5 ln2:0 brother: main
wo shi abc()func: abc  ln: 5 ln2:9 brother: cdf
我在b.sh 里写了cdf 函数调用 abc 函数 ,看到输出的差别了吧,我们可以利用这些参数打印出代码出错行的位置,以及代码出错时,是由哪个函数调用的,等等。。。。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Python3中内置类型bytes和str用法及byte和string之间各种编码转换
  • 红帽7.3能支持我的rockwell芯片的内置猫吗?
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式
  • 请问在 redlinux 8.0 下可否安装内置MODEM
  • Linux下GCC内置原子操作函数(多线程资源访问)介绍
  • 请教高手,rethat linux9.0不能识别内置网卡
  • python内置映射类型(mapping type):dict哈希字典遍历方式及其它用法举例
  • 什么版本的linux系统 内置 glibc2.4以上的版本
  • 初用linux(redhat7)内置modem没戏了, 帮帮忙!!
  • 请问:java中的内置类是何意思?
  • 在redhat 8.0中如何用内置猫上网,请指教
  • 怎样安装sis900内置网卡的驱动
  • 如何在Linux用内置调制解调器上网
  • 高手帮忙啊!!!主板内置声卡怎么安装啊!
  • 大送分,寻求解决方案,在没有内置光驱的笔记本装LINUX,....
  • 哪里有GVC致福ENET CONEXANT(ROCKWELL)(SF-1156IV/R3)内置调制解调器Linux驱动?
  • red hat linux8.0内置猫问题,大家多帮忙8-)
  • python基础教程之基本内置数据类型介绍
  • solaris9.0内置软件的启动,使用问题!!
  • 问一个关于在shell中调用内置命令时参数的问题?参数从空格处被断开
  • 我的内置摩托罗拉猫如何安装


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3