调试 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 ...
随机推荐
- 1014 2018 使用FLAG counter
AmazingCounters.com 不能用了,服务器访问不了了,之前的博客浏览量也看不到了,1014号换了个新的--FLAG counter,就是博客右边那个.
- Android简易项目--傻瓜式阿拉伯语输入法(Dummy Arabic Input)
一.应用名称 Android简易项目--傻瓜式阿拉伯语输入法(Dummy Arabic Input) 二.应用图标 三.应用说明 现在通行的阿拉伯语键盘布局并无规律可循,阿拉伯语使用者需要花费较多时间 ...
- python安装与初始
第一天学习中了解到python是高级语言,和java.PHP性质相同,而c语言.汇编属于低级语言,而高级语言与低级语言的区别,很重要的一点在于内存的处理上,低级语言在调用内存时需要自己编程来控制程序内 ...
- ubuntu 删除开机系统引导,设置快速开机和安静开机
1.隐藏开机选择界面 1.sudo gedit /etc/default/grub GRUB_HIDDEN_TIMEOUT=0 GRUB_HIDDEN_TIMEOUT_QUIET=true //隐藏开 ...
- ios 第4天
dealloc method 会在对象释放前调用这个方法(函数) 可以让对象在释放前把一些自己申请的对象 先释放了 满足 谁申请 谁释放 的原则 例如 dealloc 会自动调用 ...
- synchronized 和 ReentrantLock 区别
synchronized 使用: 1:当一个线程访问object的一个synchronized(this)同步代码块时,它就获得了这个object的对象锁.结果,其它线程对该object对象所有同步代 ...
- poj3279(dfs+二进制枚举思路)
题意转载自https://www.cnblogs.com/blumia/p/poj3279.html 题目属性:DFS 相关题目:poj3276 题目原文:[desc]Farmer John know ...
- Oracle特殊字符转义:&和'
Oracle特殊字符转义:&和' 我们在SQL*PLUS下执行 SQL show all命令时,可以发现一个参数:define & (hex 26),如下所示 concat . ...
- <Spark><Tuning and Debugging>
Overview 这一部分我们主要讨论如果配置一个Spark application,如何tune and debug Spark workloads 配置对Spark应用性能调优很重要.我们有必要理 ...
- 20165214 实验二 Java面向对象程序设计
一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:朱文远 学号:20165214 指导教师:娄嘉鹏 实验日期:2018年4月16日 实验时间:13:45 - 15:25 实验序号:二 ...