-- 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我国殊荣发布
推荐文章
推荐阅读:only汽车网