0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Shell脚本检查工具ShellCheck介绍

roborobo_0706 来源:WetWan 2023-12-27 13:43 次阅读

ShellCheck是一个用于bash/sh shell脚本的静态分析工具,可以辅助检查脚本语法错误,给出建议增强脚本健壮性。

作者创建了一个在线网站 https://www.shellcheck.net/ ,你可以直接将代码贴到编辑框中进行在线检查。

c084337a-a478-11ee-8b88-92fbcf53809c.png

当然你也可以将工具部署到本地计算机使用。

本地部署

联网安装

最简单的方式是使用包管理器安装。基本上各种平台都能直接安装,比如笔者的archlinux机器:

$sudopacman-Sshellcheck

安装成功后,测试脚本

$shellchecktest.sh

离线安装

在Github上直接下载对应平台预编译好的可执行文件,解压缩到本地即可使用。

c09ec4b0-a478-11ee-8b88-92fbcf53809c.png

代码编辑器集成

可以根据官方说明安装VIM、VSCODE等编辑器插件直接在编译器中使用。

使用示例

示例一

$cattest.sh
#!/bin/bash

cat$0

foriin{1..10}
do
echo$i
done
$shellchecktest.sh

shellcheck输出内容如下:

c0adc1ae-a478-11ee-8b88-92fbcf53809c.png

可以看出,shellcheck使用的关键字是info,说明脚本本身没有语法错误,但给出了一些建议使脚本更加健壮。

示例二

再看一个包含警告和错误的脚本。

$cattest1.sh
#!/bin/bash

var1=42
var2=70
echo$(($var1+$var2))

$shellchecktest1.sh

shellcheck输出内容如下:

c0bf2a70-a478-11ee-8b88-92fbcf53809c.png

首先是warning信息,第3行变量赋值有一个空格,实际上是不对的。

第4行给出error信息,变量与=之间不能有空格,语法错误。

第5行意图是输出两个变量的和,但(())内变量不需要使用$符合。







审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 计算机
    +关注

    关注

    19

    文章

    7473

    浏览量

    87827
  • Shell
    +关注

    关注

    1

    文章

    365

    浏览量

    23341
  • vscode
    +关注

    关注

    1

    文章

    155

    浏览量

    7686

原文标题:Shell脚本检查工具ShellCheck

文章出处:【微信号:ExASIC,微信公众号:ExASIC】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    脚本美化高手之轻松实现文本颜色和背景定制的酷炫Shell技巧

    shell脚本中 echo 和 printf 都可以输出内容。示例1: echo -e "�33[43;35m david use echo say Hello World �33[0m
    的头像 发表于 12-06 10:38 91次阅读
    <b class='flag-5'>脚本</b>美化高手之轻松实现文本颜色和背景定制的酷炫<b class='flag-5'>Shell</b>技巧

    Linux从零到精通:最简单的Shell脚本入门教程

    通过简单的命令和脚本,实现对系统的灵活控制和自动化管理。 shell脚本前言 shell脚本入门 she
    的头像 发表于 12-05 09:56 335次阅读
    Linux从零到精通:最简单的<b class='flag-5'>Shell</b><b class='flag-5'>脚本</b>入门教程

    嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-shell脚本编写之函数

    shell中的函数定义比较简单,定义函数名可以没有类型,函数返回值可有可无,如果有返回值,必须返回整数n(0~255)。同时,函数的定义必须放在shell脚本的开头部分,只有函数被shell
    发表于 09-23 10:18

    飞凌嵌入式ElfBoard ELF 1板卡-shell脚本编写之函数

    shell中的函数定义比较简单,定义函数名可以没有类型,函数返回值可有可无,如果有返回值,必须返回整数n(0~255)。同时,函数的定义必须放在shell脚本的开头部分,只有函数被shell
    发表于 09-06 10:33

    嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-shell脚本编写之四则运算

    shell程序默认支持整数加、减、乘、除、求余的运算。 1、使用$(())方式进行运算 例如计算2+3,使用$((2+3))。 我在脚本中加入这几种运算进行测试: 执行脚本后结果如下: 2
    发表于 09-04 10:08

    飞凌嵌入式ElfBoard ELF 1板卡-shell脚本编写之四则运算

    shell程序默认支持整数加、减、乘、除、求余的运算。 1、使用$(())方式进行运算 例如计算2+3,使用$((2+3))。 我在脚本中加入这几种运算进行测试: 执行脚本后结果如下: 2
    发表于 09-03 14:30

    shell脚本执行的三种方式及区别

    在Linux系统中,Shell脚本是一种非常实用的工具,用于自动化执行一系列命令。Shell脚本可以大大提高工作效率,简化复杂的任务。在这篇
    的头像 发表于 08-30 15:24 917次阅读

    执行shell脚本的方式包括什么

    执行Shell脚本的方式有很多种,以下是一些常见的方法: 直接运行脚本文件 在命令行中,可以直接使用脚本文件的路径来运行脚本。例如: ./s
    的头像 发表于 08-30 15:17 300次阅读

    shell具有的功能和特点

    Shell 是一个命令行解释器,用于与操作系统进行交互。它提供了一种方便的方式来执行命令、管理文件和目录、运行程序等。以下是 Shell 的功能和特点的介绍: 命令执行 Shell
    的头像 发表于 08-30 14:48 463次阅读

    嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-shell脚本编写之本地脚本的编写和执行

    ,再次查看var变量的值,可以看到成功输出235,该方式执行脚本后的变量,没有释放,所以我们经常使用source来配置shell环境变量,后边讲开发板交叉编译工具设置时会使用到。
    发表于 08-29 10:51

    shell脚本编写之本地脚本的编写和执行

    的使用可以参考下一节)将变量值输出进行查看,如下图,可以看到没有输出var的值;然后再使用source或. 进行脚本执行,再次查看var变量的值,可以看到成功输出235,该方式执行脚本后的变量,没有释放,所以我们经常使用source来配置
    发表于 08-28 09:36

    嵌入式学习-shell介绍

    输出执行结果呈现给用户;同时Shell也是一种解释性的编程语言或者脚本语言,开发容易可以在短时间内完成功能强大又好用的脚本,可以在不同的系统上移植非常方便。二、Shell的特性不同的发
    发表于 08-16 09:13

    shell基本介绍及常用命令之shell介绍

    输出执行结果呈现给用户;同时Shell也是一种解释性的编程语言或者脚本语言,开发容易可以在短时间内完成功能强大又好用的脚本,可以在不同的系统上移植非常方便。二、Shell的特性不同的发
    发表于 08-15 09:28

    Android APP合规检查工具介绍

    如果想检查多个内置方法外的方法,只需要创建一个新的集合,往集合里放你想检查的方法member,然后传入MIITRuleChecker.check()内即可。
    的头像 发表于 01-15 11:35 1125次阅读
    Android APP合规<b class='flag-5'>检查</b><b class='flag-5'>工具</b><b class='flag-5'>介绍</b>

    shell脚本调试技巧

    0、专业脚本的规范格式 函数1函数2main函数main$* 1、使用dos2unix命令转换来自windows下开发的脚本 dos2unix默认是没有安装的,可以yum 安装
    发表于 12-28 16:57