今日我们来聊聊一篇关于shell语法检查模式详解的文章,网友们对这件事情都比较关注,那么现在就为大家来简单介绍下shell语法检查模式详解,希望对各位小伙伴们有所帮助
在进入本指南的重点之前,让我们简单地探索一下详细模型。可以使用-v debug选项来启用它,该选项告诉shell在读取时显示每一行。为了说明这是如何工作的,这里有一个将PNG图像批量转换为JPG格式的示例脚本。
将以下内容输入(或复制粘贴)到文件中。
#!/bin/bash
#转换
对于*中的图像。png做
转换“$ image”$ { image %。png}。' jpg '
“回声”图像$image已转换为${image%。png}。' jpg '
完成的
出口0
然后保存文件,并使用以下命令使脚本可执行:
$ chmod x script.sh
我们可以执行脚本并显示Shell已经读取的每一行:
$ bash -v script.sh
在Shell脚本中启用语法检查调试模式
使用-n激活语法检查模式。
它会让shell读取所有命令,但不会执行它们。它(shell)只会检查语法。一旦在shell脚本中发现错误,shell将在终端中输出错误,否则不显示任何内容。
激活语法检查的命令如下:
$ bash -n script.sh
因为脚本中的语法是正确的,所以上面的命令不会显示任何内容。因此,让我们尝试删除结束for循环的done,看看是否会显示一个错误:
以下是修改后的脚本,包含bug,批量将png图片转换成jpg格式。
#!/bin/bash
#有错误的脚本
#转换
对于*中的图像。png做
转换“$ image”$ { image %。png}。' jpg '
“回声”图像$image已转换为${image%。png}。' jpg '
出口0
保存文件,然后运行脚本并执行语法检查:
$ bash -n script.sh
从上面的输出中,我们看到我们的脚本中有一个错误,for循环缺少一个ending done关键字。该脚本从头到尾检查文件。一旦没有找到(完成),shell将输出一个语法错误:
script.sh:第11:行语法错误:意外的文件结尾
我们可以同时结合详细模式和语法检查模式:
$ bash -vn script.sh
我们还可以通过修改脚本的第一行来启用脚本检查。
比如下面这个例子:
#!/bin/bash -n
#更改脚本的第一行以启用语法检查
#转换
对于*中的图像。png做
转换“$ image”$ { image %。png}。' jpg '
“回声”图像$image已转换为${image%。png}。' jpg '
出口0
如上所示,保存文件并在运行时检查语法:
$ ./script.sh
script.sh:第12:行语法错误:意外的文件结尾
此外,我们可以使用内置的set命令在脚本中启用调试模式。
在下面的例子中,我们只检查脚本中的for循环语法。
#!/bin/bash
#使用set shell内置命令启用调试
#转换
#启用调试
集合n
对于*中的图像。png做
转换“$ image”$ { image %。png}。' jpg '
“回声”图像$image已转换为${image%。png}。' jpg '
#禁用调试
集合n
出口0
保存并再次执行脚本:
$ ./script.sh
以上就是shell语法检查模式详解这篇文章的一些介绍,网友如果对shell语法检查模式详解有不同看法,希望来共同探讨进步。