调试 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 ...
随机推荐
- sql2008r2安装失败的解决办法
setup fails with: '.', hexadecimal value 0x00, is an invalid character.SQL 2012 Setup issues - hexad ...
- Android 音视频深入 三 MP4解码播放视频 (附源码下载)
本篇项目地址,名字是媒体解码MediaCodec,MediaExtractor,求starhttps://github.com/979451341/Audio-and-video-learning-m ...
- zookeeper集群环境搭建(纯zookeeper)
1.首先在三台机子上放上zookeeper的解压包,解压. 然后的话zookeeper是依赖于jdk的,那么也应该安装jdk,这里不详细说明了. mv zookeeper-3.4.5 zookeepe ...
- oracle sqlserver mysql 通过sql查看表及字段注释
oracle: SELECT A.TABLE_NAME,A.COMMENTS,B.COLUMN_NAME,B.COMMENTS FROM USER_TAB_COMMENTS A,USER_COL_CO ...
- Java 整体测试重点题 错题积累
重点题 错题积累 1: 解析: %d:用来设置输出日志的日期和时间 %m:用来输出代码中指定的消息 %n:用来输出一个回车换行符 %l:用来输出日志事件的发生位置 %p:用来输出优先级 %f:用 ...
- Android知识补充(Android学习笔记)
Android知识补充 ●国际化 所谓的国际化,就是指软件在开发时就应该具备支持多种语言和地区的功能,也就是说开发的软件能同时应对不同国家和地区的用户访问,并针对不同国家和地区的用户,提供相应的.符合 ...
- 7.3 C++模板中的函数式参数
参考:http://www.weixueyuan.net/view/6400.html 总结: 模板类至少有一个类参数,但是可以有多个参数,这些参数中可以存在非类类型的参数. 类参数是指 class ...
- git 继续前进篇
* git 输入 git log (--all)命令后出现<END>标记? 按q退出历史记录列表即可 * 继续前一天的 继续推送到github 步骤看图 先 链接到 之前工作区 的 文 ...
- html 相对路径 问题
在jsp跳转servlet和servlet跳转jsp过程中,因为servlet和jsp在不同的目录下,所以直接跳转失败.下面是查阅网上的资料,简单的总结下相对路径的问题. 这种情况下index.jsp ...
- <HBase><读写><LSM>
Overview HBase中的一个big table,首先会按行划分成一些region(这些region之间是有序的,由startkey保证),每个region分配到不同的节点进行存储.因此,reg ...