|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
写学习日记,这是学习历程的见证,同时我坚持认为是增强学习信念的法宝。以上是我学习Linux的心得体会,希望对大家的学习有所帮助,由于水平有限,本文难免有所欠缺,望请指正。
Bash是Linux操纵体系的默许Shell剧本。Shell是用来处置操纵体系和用户交互的一个程序。Shell的剧本能够匡助用户主动化地和操纵体系举行交互。你也能够了解为一种剧本式的编程。即然有编程,那末,程序的编译器,注释器,调试器就必不成少了,Bash也一样,但在调试方面大概会有一些和编程言语纷歧样的工具和手艺,以是,上面这篇文章次要是申明调试bash剧本的各类手艺。
跟踪剧本的实行
你可让bash打印出你剧本实行的过程当中的一切语句。这很复杂,只必要利用bash的-x选项就能够做到,上面让我们来看一下。
上面的这段剧本,先是输入一个问候语句,然后输入以后的工夫:
1.#!/bin/bash2.echo"Hello$USER,"3.echo"Todayis$(date+"%Y-%m-%d")"上面让我们利用-x选项来运转这段剧本:
1.$bash-xexample_script.sh2.+echo"Hellochenhao,"3.Hellochenhao,4.++date+%Y-%m-%d5.+echo"Todayis2009-08-31"6.Todayis2009-08-31这时候,我们能够看到,bash在运转前打印出了每行命令。并且每行后面的+号标明了嵌套。如许的输入可让你看到命令实行的按次并可让你晓得全部剧本的举动。
在跟踪里输入行号
在一个很年夜的剧本中,你会看到良多良多的实行跟踪的输入,浏览起来十分费力,以是,你能够在每行前加上文件的行号,这会十分有效。要做到如许,你只必要设置上面的情况变量:
1.2.exportPS4="+${BASH_SOURCE}:${LINENO}:${FUNCNAME[0]}:"让我们看看设置上了PS4这个情况变量后会是甚么样的输入。
1.$bash-xexample_script.sh2.+example_script.sh:2::echo"Hellochenhao,"3.Hellochenhao,4.++example_script.sh:3::date+%Y-%m-%d5.+example_script.sh:3::echo"Todayis2009-08-31"6.Todayis2009-08-31
调试部分的剧本
有些时分,你其实不想调试全部剧本,你只需调试个中的一部分,那末,你能够在你想要调试的剧本之前,挪用“set-x”,停止的时分挪用“set+x”就能够了。以下面的剧本所示:
1.#!/bin/bash2.echo"Hello$USER,"3.set-x4.echo"Todayis$(date%Y-%m-%d)"5.set+x让我们看看运转起来是啥样?
1.$./example_script.sh2.Hellochenhao,3.++example_script.sh:4::date+%Y-%m-%d4.+example_script.sh:4::echo"Todayis2009-08-31"5.Todayis2009-08-316.+example_script.sh:5::set+x注重:我们在运转剧本的时分,不必要利用bash-x了。
日记输入
跟踪日记偶然候太多了,多得都受不了,并且,输入的内容很难浏览。一样平常来讲,我们良多时分只体贴于前提表达式,变量值,或是函数挪用,或是轮回等。。在这类情形下,log一些感乐趣的特定的信息,大概会更好。
利用log前,我们先写一个函数:
1._log(){2.if["$_DEBUG"=="true"];then3.echo1>&2"$@"4.fi5.}因而,你就能够在你的剧本中以下利用:
1.2._log"Copyingfiles..."3.cpsrc/*dst/- 我们能够看到,下面谁人_log函数,必要反省一个_DEBUG变量,只要这个变量是真,才会真正开辟输入日记。如许,你就只必要把持这个开关,而不必要删除你的debug信息。
复制代码 1.2.$_DEBUG=true./example_script.sh利用Bash公用调试器
假如你在写一个相称庞大的剧本,而且,你必要一个完全的像调试其余言语一样的调试器,那末你能够试着用用这个开源软件——bashdb,一个Bash的公用调试器。这个调试器很壮大,你想失掉的功效,他都有,好比,设置断点,单步跟踪,跳出函数,等等。它的用户接口很想GDB,这是他的文档。
(全文完)
本文来自:http://coolshell.cn/?p=1379
文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln |
|