shell脚本学习总结11--脚本调试
参数:
-n 不执行脚本,仅检查语法是否错误
-v 将脚本内容输出到屏幕上,然后执行脚本
-x 执行脚本,并将内容输出到屏幕
-n
[root@new sbin]# sh -n debug.sh
[root@new sbin]#
-v
[root@new sbin]# sh -v debug.sh
module () { eval `/usr/bin/modulecmd bash $*`
}
#/bin/bash
if [ $ -gt ];then
echo "yes"
else
echo "no"
fi
yes
-x
[root@new sbin]# sh -x debug.sh
+ '[' -gt ']'
debug.sh: line : [: -gt: unary operator expected
+ echo no
no
拓展:
利用PS4,使调试时输出行号
[root@new sbin]# echo $PS4
+
[root@new sbin]# export PS4='+{$LINENO}'[root@new sbin]# sh -x debug.sh 4
+{2}'[' 4 -gt 5 ']'
+{5}echo no
no
利用set ,缩小调试作用域
set -x 开启调试功能
set +x 关闭调试功能
[root@new sbin]# cat demo.sh
#/bin/bash
. /etc/init.d/functions
set -x
read -p "Pleas input your anwser[yes/no]: " an
set +x
if [[ $an = yes ]]
then
action "The answer is true" /bin/true
else
action "Then answer is false" /bin/false
fi
[root@new sbin]# sh demo.sh
+{}read -p 'Pleas input your anwser[yes/no]: ' an
Pleas input your anwser[yes/no]: yes
+{}set +x
The answer is true [ OK ]
shell脚本学习总结11--脚本调试的更多相关文章
- sh脚本学习之: sh脚本 、sed、awk
sh脚本 sh命令的批处理文件,支持更复杂的逻辑. Shell中的变量 参数 $0 当前脚本路径 $1....$n 脚本执行对应的第n个参数 条件判断 文件判断 test [op] path e存在 ...
- 【Shell 编程基础第二部分】Shell里的流程控制、Shell里的函数及脚本调试方法!
http://blog.csdn.net/xiaominghimi/article/details/7603003 本站文章均为李华明Himi原创,转载务必在明显处注明:转载自[黑米GameDev街区 ...
- 转 shell脚本学习指南
shell脚本学习指南 以下八点不敢说就能成为你shell脚本学习指南de全部,至少可以让你编写出可靠的shell脚本. 1. 指定bashshell 脚本的第一行,#!之后应该是什么?如果拿这个问题 ...
- shell 脚本学习
Shell简介 概述 Shell是一种具备特殊功能的程序,它提供了用户与内核进行交互操作的一种接口.它接收用户输入的命令,并把它送入内核去执行.内核是Linux系统的心脏,从开机自检就驻留在计算机的内 ...
- Shell脚本学习之expect命令
转载:http://blog.csdn.net/leexide/article/details/17485451 目录(?)[-] 一概述 二expect的安装 一Tcl 安装 二expect 安装 ...
- 【shell脚本学习-1】
Shell学习笔记 简介: Shell 是一个用C语言编写的程序,它是用户使用Linux的桥梁.Shell既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序,这个应用程序提供了一个 ...
- Shell脚本学习指南笔记
Shell脚本学习指南 作者:Danbo 2015-8-3 脚本编程语言与编译型语言的差异 许多中型.大型的程序都是用编译型语言写的,例如:C.C+.Java等.这类程序只要从源代码(Source C ...
- shell脚本学习之6小时搞定(1)
shell脚本学习之6小时搞定(1) 简介 Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本. Unix/Linux上常见的Shell脚本解释器有bash.sh.csh.ksh等,习惯上把 ...
- Shell脚本学习第二课·
Shell文件包含 shell也可以包含外部脚本,语法格式如下: . filename 或 source filename 例如创建两个shell脚本. 脚本1:test1.sh url = &quo ...
随机推荐
- GitHub上最火的Android开源项目(完结篇)
摘要:截至目前,在GitHub“最受欢迎的开源项目”系列文章中我们已介绍了40个Android开源项目,对于如此众多的项目,你是Mark.和码友分享经验还是慨叹“活到老要学到老”?今天我们将继续介绍另 ...
- 用ping让对方电脑堵塞瘫痪
用ping让对方电脑堵塞瘫痪2008-04-27 11:32 定义echo数据包大小. 在默认的情况下windows的ping发送的数据包大小为32byt,我们也可以自己定义它的大小, 但有一个大小的 ...
- mydate97时间插件集成jquery插件
1.初始化JS: //把mydate97时间插件集成jquery插件 (function ($) { $.fn.mydatePicker = function (options) { return t ...
- php回调函数call_user_func和call_user_func_array详解
call_user_func($fun); call_user_func 函数类似于一种特别的调用函数的方法,使用方法如下: 1.调用 普通函数: <?php function a($b, $c ...
- OGG目的端的checkpoint table被drop的修复方法
OGG目的端的checkpoint table被drop的修复方法 參考自:OGG Replicat Failed Due To Check_point Table beingTruncated (文 ...
- C++不让程序一闪而过
末尾加上System("pause") 不过需要注意,这个只在win32下有效.不具备可移植性.
- HttpURLConnection上传文件
HttpURLConnection上传文件 import java.io.BufferedReader; import java.io.DataInputStream; import java.io. ...
- 设置root密码,su与sudo的区别
sudo passwd root 可以修改root密码,但首先会要求你输入当前用户的密码 sudo的意思是switch user do,默认切换到root,要求当前用户的密码,会自动调用exit返回到 ...
- zombie处理
僵尸进程处理 程序处理(预处理) 父进程wait/waitpid. signal(SIGCHLD, SIG_IGN); 捕捉SIGCHLD,signal(SIGCHLD, handler);可获取子进 ...
- Maven + Spring 进行多环境自动切换功能
在pom.xml的<project></project>的最下放写入如下代码: <!-- profiles setting start [mvn install -P x ...