用内置变量调试shell脚本的方法
一般的shell脚本的调试基本都是echo 来处理遇到比较大的脚本的时候,就比较麻烦了,出了问题,还不是很好定位哪行代码出问题了。
其实shell内置的一些变量可以很好的解决这个问题:
$LINENO $FUNCNAME $BASH_LINENO 这几个变量记录了脚本当前的执行位置,以及正在执行的函数。具体可以可以man 文档页。
#!/bin/bash
abc() {
echo "wo shi abc()"
echo "func: $FUNCNAME ln: $LINENO ln2:${BASH_LINENO[1]} brother: ${FUNCNAME[1]}"
}
#!/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 函数 ,看到输出的差别了吧,我们可以利用这些参数打印出代码出错行的位置,以及代码出错时,是由哪个函数调用的,等等。。。。
相关推荐
-
如何调试Linux shell脚本
shell也有一个真实的调试模式.如果在脚本"strangescript" 中有错误,您可以这样来进行调试: sh -x strangescript 这将执行该脚本并显示所有变量的值. shell还有一个不需要执行脚本只是检查语法的模式.可以这样使用: sh -n your_script 这将返回所有语法错误. linux/unix shell l脚本调试方法 Shell提供了一些用于调试脚本的选项,如下所示: -n 读一遍脚本中的命令但不执行,用于检查脚本中的语法错误 -v 一边执行
-
用内置变量调试shell脚本的方法
一般的shell脚本的调试基本都是echo 来处理遇到比较大的脚本的时候,就比较麻烦了,出了问题,还不是很好定位哪行代码出问题了.其实shell内置的一些变量可以很好的解决这个问题: $LINENO $FUNCNAME $BASH_LINENO 这几个变量记录了脚本当前的执行位置,以及正在执行的函数.具体可以可以man 文档页. 实例代码:a.sh 复制代码 代码如下: #!/bin/bash abc() {echo "wo shi abc()" echo "func:
-
shell 脚本中常用的内置变量(Bash 内置变量)
$FUNCNAME.$LINENO.$PWD FUNCNAME和LINENO 变量经常用于脚本的调试 FUNCNAME 表示当前函数的名字,作用范围仅限函数中使用,在函数外无值 LINENO 表示当前所在脚本中变量出现在的行号 PWD 表示当前目录, 对应于 pwd命令 现有个脚本 a.sh 内容如下 #!/bin/bash testa() { echo 'func='$FUNCNAME,$LINENO } testa echo 'lineno:'$LINENO echo 'xx:'$FUNCN
-
Perl中的特殊内置变量详细介绍
内置变量 $_:先来看一个例子: 复制代码 代码如下: #!/usr/bin/perl -w@array = qw(a b c d);foreach (@array) { print $_," ";} 例子的作用就是定义一个数组并把其中的元素打印出来,这里需要注意的是foreach循环部分,foreach循环的标准格式应该是: 复制代码 代码如下: foreach $element (@array){ ......} 其中数组@array将其中的元素依次赋值给$element,但是在上
-
PHP模板引擎Smarty内置变量调解器用法详解
本文实例讲述了PHP模板引擎Smarty内置变量调解器用法.分享给大家供大家参考,具体如下: Smarty 中的变量调解器相当于函数,其调用方式为:通过 "|" 后面直接跟调解器函数名,如果有参数,得加在 ":" 后面,多个参数的话,累加即可. 下面为您介绍 Smarty 中内置的变量调解器: 1.capitalize 将变量里的所有单词首字大写.参数值 boolean 型决定带数字的单词,首字是否大写.默认不大写 index.php $tpl->assign
-
php魔术方法与魔术变量、内置方法与内置变量的深入分析
php内置变量了:DIRECTORY_SEPARATORDIRECTORY_SEPARATOR是一个返回跟操作系统相关的路径分隔符的php内置命令,在windows上返回/,而在linux或者类unix上反悔/,就是这么个区别,通常在定义包含文件路径或者上传保存目录的时候会用到.PHP 把所有以 __ (两个下划线)开头的类方法当成魔术方法.所以你定义自己的类方法时,不要以 __ 为前缀. 1 . __construct()当实例化一个对象的时候,这个对象的构造方法将首先被调用:我们知道 p
-
分享最新版 nginx内置变量 大全
nginx内置变量 内置变量存放在 ngx_http_core_module 模块中,变量的命名方式和apache 服务器变量是一致的.总而言之,这些变量代表着客户端请求头的内容,例如$http_user_agent, $http_cookie, 等等.下面是nginx支持的所有内置变量: $arg_name 请求中的的参数名,即"?"后面的arg_name=arg_value形式的arg_name $args 请求中的参数值 $binary_remote_addr 客户端地址的二进
-
nginx 内置变量详解及隔离进行简单的拦截
1,nginx内置变量 nginx 有很多内置变量可以进行简单的过滤. $arg_name 请求行中的name参数. $args 请求行中参数字符串. $cookie_name 名为name的cookie. 与$uri相同. $http_name 任意请求头的值:变量名的后半部为转化为小写并且用下划线替代横线后的请求头名称. $host "Host"请求头的值,如果没有该请求头,则为与请求对应的虚拟主机的首要主机名. $query_string 与$args相同. $realpath_
-
浅谈python内置变量-reversed(seq)
1.简单解释就是:反转一个序列对象 例子1: def fun3(): x = [3,6,9] for i in reversed(x): print(i,end=',') fun3() 输出: >>>9,6,3, 例子2: >>> a = range(5) >>> a range(0, 5) >>> list(a) [0, 1, 2, 3, 4] >>> a1 = reversed(a) >>> l
-
Python 内置变量和函数的查看及说明介绍
Python 解释器内置了一些常量和函数,叫做内置常量(Built-in Constants)和内置函数(Built-in Functions),我们怎么在 查看全部内置常量和函数的名字呢?怎么查看全部内置常量和函数的使用说明呢? 一.查看全部的内置常量和内置函数 1.在开始菜单中输入"idle",按下回车(Enter)打开Python IDLE,我用的 是 Python 3.6.5 ,版本不同,界面有差异,但是操作方法是一样的. 2.方法一: 输入 dir(__builtins__)
-
three.js着色器材质的内置变量示例详解
什么是着色器? 固定渲染管线: --标准的几何&光照(T&L)管线,功能是固定的,它控制着世界.视.投影变换及固定光照控制和纹理混合.T&L管线可以被渲染状态控制,矩阵,光照和采制参数.如果有了固定渲染管线,编写程序就比较容易了,因为所有的变换都是由固定渲染管线来完成的,但是缺点就是自由度低.固定渲染管线只能完成一些最基本的操作,如果想要做一些特殊的处理,就比较麻烦了. 可编辑渲染管线:--WebGL中不存在固定渲染管线,坐标变换必须全部由自己来做,这个记述了坐标变换的机制就叫做着
随机推荐
- 使用python实现省市三级菜单效果
- 创建一个在标题栏中没有“关闭”按钮的 HTA
- MySQL实现批量插入以优化性能的教程
- JavaScript开发者必备的10个Sublime Text插件
- 非常好的for 教程, 当时我就是看这个学习for 的第1/2页
- Python基础语法(Python基础知识点)
- .Net连接Oracle数据库的实现代码
- Js 打字效果 逐一出现的文字
- android4.0混淆XmlPullParser报错原因分析解决
- 浅析Java中的继承与组合
- jQuery中live方法的重复绑定说明
- Android图片压缩上传之基础篇
- 去除有数组中重复的元素
- Android实现自动填写获取验证码功能
- 关于Google Adsense 2007年1月新条款的解释说明
- 获取微信uin的方法
- python使用生成器实现可迭代对象
- phpstudy2018升级MySQL5.5为5.7教程(图文)
- Python3.7中安装openCV库的方法
- JavaScript数组去重实现方法小结