城市网

shell语法检查模式详解

导读 今日我们来聊聊一篇关于shell语法检查模式详解的文章,网友们对这件事情都比较关注,那么现在就为大家来简单介绍下shell语法检查模式详解,希

今日我们来聊聊一篇关于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语法检查模式详解有不同看法,希望来共同探讨进步。