-- Aaron Kili
文中导航栏
-开启 verbose 调试模式11%
-在 Shell 脚本制作中开启语法检查调试模式30%
编译程序自: http://www.tecmint.com/check-syntax-in-shell-script/
创作者: Aaron Kili
译员: geekpi
大家打开了 Shell 脚本制作调节系列产品文章内容,起先表述了不一样的调节选择项,下边详细介绍怎样开启 Shell 调试模式。
写完脚本制作后,提议在运作脚本制作以前先查验脚本制作中的英语的语法,而不是查询他们的輸出以确定他们是不是一切正常工作中。
在本系列产品的这一部分,大家将掌握怎么使用语法检查调试模式。记牢大家以前在本系列产品的第一部分中表述了不一样的调节选择项,在这儿,大家将应用他们来实行脚本制作调节。
开启 verbose 调试模式
在进到本具体指导的关键以前,使我们简短地探寻下 verbose 方式。它可以用 -v
调节选择项来开启,它会告知 shell 在载入时显示信息每列。
要展现这一怎样工作中,下边是一个实例脚本制作来大批量将 PNG 图片格式转换成 JPG 文件格式。
将下边內容键入(或是拷贝)到一个文档中。
#!/bin/bash
#convert
for image in *.png; do
convert "$image" "${image%.png}.jpg"
echo "image $image converted to ${image%.png}.jpg"
done
exit 0
然后储存文档,并且用下边的指令使脚本制作可实行:
$ chmod x script.sh
我们可以实行脚本制作并显示信息它被 Shell 载入到的每一行:
$ bash -v script.sh
显示信息shell脚本制作中的全部行
在 Shell 脚本制作中开启语法检查调试模式
返回大家主题风格的关键,-n
激话语法检查方式。它会让 shell 载入全部的指令,可是不容易实行他们,它(shell)总是查验英语的语法。
一旦 shell 脚本制作中发觉有不正确,shell 会在终端设备中輸出不正确,要不然就不容易显示信息任何东西。
激话语法检查的指令以下:
$ bash -n script.sh
由于脚本制作中的英语的语法是恰当的,上边的指令不容易显示信息任何东西。因此,使我们试着删掉完毕 for 循环系统的 done
看来下是不是会显示信息不正确:
下边是改动过的带有 bug 的大批量将 png 图片格式转换成 jpg 文件格式的脚本制作。
#!/bin/bash
#script with a bug
#convert
for image in *.png; do
convert "$image" "${image%.png}.jpg"
echo "image $image converted to ${image%.png}.jpg"
exit 0
储存文档,然后运作该脚本制作并实行语法检查:
$ bash -n script.sh
查验 shell 脚本制作英语的语法
从上边的輸出中,大家见到大家的脚本制作中有一个不正确,for 循环系统缺乏了一个完毕的 done
关键词。shell 脚本制作从头至尾查验文档,一旦沒有寻找它(done
),shell 会复印出一个拼写错误:
script.sh: line 11: syntax error: unexpected end of file
我们可以另外融合 verbose 方式和语法检查方式:
$ bash -vn script.sh
在脚本制作中另外开启 verbose 定期检查语法检查
此外,我们可以根据改动脚本制作的第一行来开启脚本制作查验,如下边的事例:
#!/bin/bash -n
#altering the first line of a script to enable syntax checking
#convert
for image in *.png; do
convert "$image" "${image%.png}.jpg"
echo "image $image converted to ${image%.png}.jpg"
exit 0
如上所显示,储存文档并在运作中查验英语的语法:
$ ./script.sh
script.sh: line 12: syntax error: unexpected end of file
除此之外,大家可以用内嵌的 set 指令来在脚本制作中开启调试模式。
下边的事例中,大家只查验脚本制作中的 for 循环系统英语的语法。
#!/bin/bash
#using set shell built-in command to enable debugging
#convert
#enable debugging
set -n
for image in *.png; do
convert "$image" "${image%.png}.jpg"
echo "image $image converted to ${image%.png}.jpg"
#disable debugging
set n
exit 0
再一次储存并实行脚本制作:
$ ./script.sh
总体来说,大家应当确保在实行 Shell 脚本制作以前先查验脚本制作英语的语法以捕获不正确。
请在下面的意见反馈栏中,让我们推送有关这篇具体指导的一切难题或意见反馈。在这个系列产品的第三一部分中,大家会表述并应用 shell 跟踪调试模式。
作者简介:
Aaron Kili 是一个 Linux 及 F.O.S.S 热衷者,将要是 Linux 计算机管理员、web 开发人员,现阶段是 TecMint 的內容原创者,他喜爱用电脑工作中,并热情共享专业知识。
创作者:Aaron Kili[1] 译员:geekpi审校:jasminepeng
文中由 LCTT[2] 原創编译程序,Linux我国殊荣发布
推荐文章
推荐阅读:旗龙
-
红米Note 8 Pro全面评测:是联发科的
一、前言:夹缝之中 红米Note8 Pro干货满满上周四的红米发布会大家感受如何?长达两个小时的发布会,笔者居然全程没有摘下耳机,一直竖着耳朵在听。上次出现这样...
2019-09-05 -
骁龙855很牛,你却只会说用它打游戏很快?
如果您在2019年购买了一台新的Android智能手机,那么Qualcomm Snapdragon 855芯片组很有可能为您的智能手机提供强有力的支持。这款小型...
2019-09-05 -
华为内部一直流出一个真实的故事,你听说过这个
94年,有个叫金森林的新人进入了华为,他被安排在车间,承担测试和物料协调等工作。当时华为的程控交换机已经进入了量产阶段,但是由于测试工具简陋,为了加快进度,员工...
2019-09-05 -
在中国爆火的ZAO引西媒关注,这个夏天你与爱
华舆讯 据西闻报道 8月30日,中国黑科技APP ZAO在苹果APP Store上线之后,立即成为了上周末海内外下载量最大的应用程序。截止到9月1日晚,ZAO已...
2019-09-05 -
荣耀Play3图赏:“魅眼”诠释极致科技 星
荣耀Play3搭载6.39英寸的魅眼全视屏,屏幕材质为LCD,搭载麒麟710F处理器,内置4000mAh电池,支持10W充电。拍照方面,该机后置4800万+80...
2019-09-05 -
亮点不够,技术来凑!沈义人:新机将有90Hz
目前OPPO已经宣布将在9月10日于上海发布OPPO Reno2系列手机,但是在发布会前夕,OPPO官方又暗示了OPPO Reno新系列产品的存在,而且这款Re...
2019-09-05 -
荣耀又放大招,全网通5G+麒麟990对战红米
2019年下半年开始,可以说是手机圈竞争最为激烈的时候,多个手机厂商都将发布自家旗舰新机。比较期待的有如华为Mate 30系列、vivo的vivo NEX 3、...
2019-09-05 -
荣耀20S有哪些亮点?这些5大新升级值得一看
荣耀20S作为荣耀20系列家族的新成员,刚发布就亮点十足,有着7nm麒麟810芯片+4800W三摄加持,下面我们一起看看吧。颜值依然独树一帜荣耀20S采用了蝶羽...
2019-09-05