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 方法的更多相关文章

  1. shell script入门

    从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操 ...

  2. linux下的Shell编程(7)使用-x和-n调试shell程序

    我们也可以在Shell下调试Shell Script脚本,当然最简单的方法就是用echo输出查看变量取值了.Bash也提供了真正的调试方法,就是执行脚本的时候用-x参数. sh -x filename ...

  3. bash shell学习-shell script基础 (笔记)

    A chain no stronger than its weakest link. "一着不慎,满盘皆输" 参考资料:鸟哥的Linux私房菜 基础学习篇(第三版)  Linux ...

  4. 第13章 学习shell script

    由于博客园中dollar符号有别的意义,所以文中的dollar符号使用¥表示 第一个script [root@localhost script]# cat -n sh01.sh #!/bin/bash ...

  5. 学习shell script

    摘要:概述.script的编写.test命令.[]判断符号.默认变量($1...).if...then条件判断式. 一.概述 [什么是shell script] 针对shell所写的脚本,将多个命令汇 ...

  6. shell及脚本4——shell script

    一.格式 1.1 开头 必须以 "# !/bin/bash"  开头,告诉系统这是一个bash shell脚本.注意#与!中间有空格. 二.语法 2.1 数值运算 可以用decla ...

  7. shell script

    一.shell script的编写与执行 1.shell script 的编写中还需要用到下面的注意事项: a.命令的执行是从上到下,从左到右地分析与执行 b.命令.参数间的多个空白都会被忽略掉 c. ...

  8. 这些年我们一起搞过的持续集成~Jenkins+Perl and Shell script

    这些年我们一起搞过的持续集成~Jenkins+Perl and Shell script ##转载注明出处:http://www.cnblogs.com/wade-xu/p/4378224.html ...

  9. 第十三章、学习 Shell Scripts 简单的 shell script 练习

    简单的 shell script 练习 简单范例 对谈式脚本:变量内容由使用者决定 [root@www scripts]# vi sh02.sh #!/bin/bash # Program: # Us ...

随机推荐

  1. oo作业总结(一)

    概述 经历了三次oo作业的洗礼,让我对java语言的强大以及面向对象编程有了初步的理解(当然,我是小白).本文接下来就将对自己这三次作业的代码进行分析以及分享自己的心路历程. 基础知识点考核 针对前三 ...

  2. 异步IO(协程,消息循环队列)

    同步是CPU自己主动查看IO操作是否完成,异步是IO操作完成后发出信号通知CPU(CPU是被通知的) 阻塞与非阻塞的区别在于发起IO操作之后,CPU是等待IO操作完成再进行下一步操作,还是不等待去做其 ...

  3. 上传本地代码到GitHub上

    由于经常忘记Git的相关代码,百度多了自然不耐烦,干脆自己写个简单的博客记录一下代码及流程了...... 1.在GitHub上新建一个仓库: 2.创建完后在仓库左上角的ssh上copy一下地址: 3. ...

  4. error MSB8008: 指定的平台工具集(V120)未安装或无效。

    打开项目属性->配置属性->右面,平台工作集,选为v10 如下图

  5. ajax返回数据定义为全局变量

    var result;   //定义全局变量    $(document).ready(function(){          $.ajax({                   type:'PO ...

  6. 玩转X-CTR100 l STM32F4 l AT24C02 EEPROM存储

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 板载EEP ...

  7. centos/7下安装mysql5.7

    本文参考自:https://blog.csdn.net/fanshujuntuan/article/details/78077433 背景:在ubuntu下用vagrant搭建了一个集群环境, 每个虚 ...

  8. LVS原理详解(3种工作方式8种调度算法)

    一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算 ...

  9. wx小程序功能总结

    注:1. 微信默认的宽度为750rpx , 不会变化. 2.bindtap 绑定触摸事件,可冒泡 catchtap 绑定触摸事件,不可冒泡 1.唤出系统菜单 2.上传图片 showSelection( ...

  10. Oracle数据库select语句

    select * from EMp--all data in EMP table select * from EMP where ename in('SMITH')--the data where e ...