调试 shell script 方法
wade@V1088:~$ cat b.sh
#!/bin/bash
dir=`pwd`
dir=$dir'/'
for f in `ls *.png`
do echo $dir$f
done
看每一行代码的执行:
wade@V1088:~$ bash -x b.sh
++ pwd
+ dir=/home/wade
+ dir=/home/wade/
++ ls chrome_1407299385726.png chrome_1427299385726.png
+ for f in '`ls *.png`'
+ echo /home/wade/chrome_1407299385726.png
/home/wade/chrome_1407299385726.png
+ for f in '`ls *.png`'
+ echo /home/wade/chrome_1427299385726.png
进一步,看具体执行的代码与行号对应:
wade@V1088:~$ export PS4='+${BASH_SOURCE}:${LINENO}:${FUNCNAME[0]}: '
wade@V1088:~$ bash -x b.sh
++b.sh::: pwd
+b.sh::: dir=/home/wade
+b.sh::: dir=/home/wade/
++b.sh::: ls chrome_1407299385726.png chrome_1427299385726.png
+b.sh::: for f in '`ls *.png`'
+b.sh::: echo /home/wade/chrome_1407299385726.png
/home/wade/chrome_1407299385726.png
+b.sh::: for f in '`ls *.png`'
+b.sh::: echo /home/wade/chrome_1427299385726.png
指定脚本的部分去跑详细的行号,其余的忽略:
wade@V1088:~$ cat b.sh
#!/bin/bash
dir=`pwd`
dir=$dir'/'
#this line above won't log out
set -x
for f in `ls *.png`
do echo $dir$f
done
set +x
#the follow line won't log out
echo 'end'
abc='new var'
运行输出:
wade@V1088:~$ ./b.sh
++./b.sh::: ls chrome_1407299385726.png chrome_1427299385726.png
+./b.sh::: for f in '`ls *.png`'
+./b.sh::: echo /home/wade/chrome_1407299385726.png
/home/wade/chrome_1407299385726.png
+./b.sh::: for f in '`ls *.png`'
+./b.sh::: echo /home/wade/chrome_1427299385726.png
/home/wade/chrome_1427299385726.png
+./b.sh::: set +x
end
调试 shell script 方法的更多相关文章
- shell script入门
从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操 ...
- linux下的Shell编程(7)使用-x和-n调试shell程序
我们也可以在Shell下调试Shell Script脚本,当然最简单的方法就是用echo输出查看变量取值了.Bash也提供了真正的调试方法,就是执行脚本的时候用-x参数. sh -x filename ...
- bash shell学习-shell script基础 (笔记)
A chain no stronger than its weakest link. "一着不慎,满盘皆输" 参考资料:鸟哥的Linux私房菜 基础学习篇(第三版) Linux ...
- 第13章 学习shell script
由于博客园中dollar符号有别的意义,所以文中的dollar符号使用¥表示 第一个script [root@localhost script]# cat -n sh01.sh #!/bin/bash ...
- 学习shell script
摘要:概述.script的编写.test命令.[]判断符号.默认变量($1...).if...then条件判断式. 一.概述 [什么是shell script] 针对shell所写的脚本,将多个命令汇 ...
- shell及脚本4——shell script
一.格式 1.1 开头 必须以 "# !/bin/bash" 开头,告诉系统这是一个bash shell脚本.注意#与!中间有空格. 二.语法 2.1 数值运算 可以用decla ...
- shell script
一.shell script的编写与执行 1.shell script 的编写中还需要用到下面的注意事项: a.命令的执行是从上到下,从左到右地分析与执行 b.命令.参数间的多个空白都会被忽略掉 c. ...
- 这些年我们一起搞过的持续集成~Jenkins+Perl and Shell script
这些年我们一起搞过的持续集成~Jenkins+Perl and Shell script ##转载注明出处:http://www.cnblogs.com/wade-xu/p/4378224.html ...
- 第十三章、学习 Shell Scripts 简单的 shell script 练习
简单的 shell script 练习 简单范例 对谈式脚本:变量内容由使用者决定 [root@www scripts]# vi sh02.sh #!/bin/bash # Program: # Us ...
随机推荐
- Saiku的基本使用介绍(三)
Saiku的基本使用介绍(这里都是使用Admin用户登录系统) 1.启动安装好的Saiku ( ./start-saiku.sh ) ,浏览器使用访问系统 http://localhost:8080 ...
- 《Python》 计算机基础
一.计算机基础: cpu:中央处理器,相当于人的大脑,运算中心,控制中心. 内存:暂时存储数据,与CPU交互. 优点:内存读取速度快. 缺点:容量小,造价高,断电即消失. 硬盘:长期存储数据. 优点: ...
- Linux系统命令行中vim编辑器取消高亮显示
由于在使用vim编辑代码的时候不小心忘记首先输入i(insert)模式,导致写的代码出现了棕黄色的阴影显示 摸索了很久终于找到了解决方法: 1.退出vim编译器 2.在在命令行下输入:nohl,回车 ...
- 深入理解java虚拟机---java虚拟机内存管理(五)
1.深入理解java虚拟机 总图: 1.线程共享区: 2.线程独占区: 1.程序计数器 理解为当前线程锁执行的字节码的行号指示器,程序计数器没有内存异常错误.
- 深入理解java虚拟机---lanmbda表达式简介(三)
1.lanmbda表达式使用 lanbmda表达式的作用: A: 取代内部类 B;增加对集合的操作,从而增强其性能
- Oracle包和包体
一.什么要使用包? 在一个大型项目中,可能有很多模块,而每个模块又有自己的过程.函数等.而这些过程.函数默认是放在一起的(如在PL/SQL中,过程默认都是放在一起 的,即Procedures中),这些 ...
- 20165214 实验三 敏捷开发与XP实践
一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:朱文远 学号:20165214 指导教师:娄嘉鹏 实验日期:2018年4月28日 实验时间:15:35 - 17:15 实验序号:三 ...
- L310
Facelift( 紧肤术) followed by a week on a beach in Thailand? Hip surgery with a side of shopping inSing ...
- Android修行之路------List view无法获取监听方法
注意: 1.在list view自定义布局中如果添加滚动布局,会导致自定义布局无法获取监听. 2.如果ListView的每项布局里有像Button,ImageButton之类View的控键时,这些Vi ...
- nginx 隐藏nginx版本号
为什么要隐藏 Nginx 版本号:一般来说,软件的漏洞都与版本有关,隐藏版本号是为了防止恶意用户利用软件漏洞进行攻击 worker_processes 1; events { worker_conne ...