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

    文章

    7857

    浏览量

    93649
  • Shell
    +关注

    关注

    1

    文章

    376

    浏览量

    25567
  • vscode
    +关注

    关注

    1

    文章

    174

    浏览量

    9326

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Linux Shell文本处理神器合集:15个工具+实战例子,效率直接翻倍

    在 Linux 系统中,文本是数据交互的 “通用语言”—— 日志文件、配置文件、数据报表、程序输出几乎都以文本形式存在。手动编辑文本不仅繁琐,还容易出错,而掌握 Shell 文本处理工具,能让你用几行命令完成批量筛选、数据提取、统计分析,甚至复杂的文本清洗。
    的头像 发表于 02-03 15:42 3370次阅读
    Linux <b class='flag-5'>Shell</b>文本处理神器合集:15个<b class='flag-5'>工具</b>+实战例子,效率直接翻倍

    AI智能体工具及其配置介绍

    。这篇短文,简单介绍一些代表性的智能体工具,解释如何配置工具应用你想要的大模型服务,并给出作者喜欢的应用场景。
    的头像 发表于 12-30 10:49 1052次阅读
    AI智能体<b class='flag-5'>工具</b>及其配置<b class='flag-5'>介绍</b>

    无图形界面模式下自定义检查工具的应用

    此前文章已介绍 ANSA 中的自定义检查工具。本文将探讨该功能在无图形界面(No-GUI)模式下的应用,旨在满足标准化工作流程的需求,适用于需要高度自动化的前处理场景。通过集成自定义检查
    的头像 发表于 11-30 14:13 866次阅读
    无图形界面模式下自定义<b class='flag-5'>检查</b><b class='flag-5'>工具</b>的应用

    【瑞萨RA6E2】1.使用串口shell点亮LED灯

    (buffer, fmt, vargs); va_end(vargs); } #endif /** * @brief shell 检查命令权限 * * @param shell shel
    发表于 11-09 17:26

    【EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-shell脚本进行IO控制-红绿灯项目-实现开机起动

    0接上文【EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-shell脚本进行IO控制-红绿灯项目 Linux 起动系统下 init 系统大多数 Linux 发行版
    发表于 11-03 17:25

    【EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-shell脚本进行IO控制-红绿灯按钮项目

    0接上文【EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-shell脚本进行IO控制-红绿灯项目-实现开机起动 EASYEAINano-TB(RV1126B)是一款专为
    发表于 11-03 10:00

    关于系统链接脚本介绍

    一、队伍介绍 本篇为蜂鸟E203系列分享第四篇,本篇介绍的内容是系统链接脚本。 二、如何实现不同的下载模式? 实现三种不同的程序运行方式,可通过makefile的命令行指定不同的链接脚本
    发表于 10-30 08:26

    【技术分享】正确编写SysV Init脚本以实现Systemd兼容(上)

    嵌入式的ubuntu系统如何写好SysVInit脚本呢?与system服务又有什么差别呢?一起随着文章来探究吧。问题背景许多传统Linux服务仍使用SysVInit脚本(/etc/init.d
    的头像 发表于 10-28 11:45 942次阅读
    【技术分享】正确编写SysV Init<b class='flag-5'>脚本</b>以实现Systemd兼容(上)

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

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

    LuatOS脚本开发入门:嵌入式运行框架全解析!

    想搞懂LuatOS如何运行Lua脚本?本文深入剖析其嵌入式运行框架,涵盖虚拟机加载、任务协程、系统初始化等关键环节,适合初学者。 一、LuatOS 编程起步 1.1 底层固件怎么启动 LuatOS
    的头像 发表于 09-26 17:45 729次阅读
    LuatOS<b class='flag-5'>脚本</b>开发入门:嵌入式运行框架全解析!

    怎样确保自动化工具在电能质量在线监测装置的安全防护检查中的准确性?

      确保自动化工具在电能质量在线监测装置安全防护检查中的准确性,需围绕 “ 工具本质可靠性、场景适配性、结果可验证性、全生命周期管控 ” 四大核心,从工具选型、校准溯源、算法优化、配置
    的头像 发表于 09-23 17:42 795次阅读

    请问如何通过 PinView 和 lua 脚本检查和修改寄存器状态?

    如何通过 PinView 和 lua 脚本检查和修改寄存器状态?
    发表于 08-28 07:57

    如何通过 PinView 和 lua 脚本检查和修改寄存器状态?

    如何通过 PinView 和 lua 脚本检查和修改寄存器状态?
    发表于 08-25 06:59

    harmony-utils之TypeUtil,类型检查工具

    harmony-utils之TypeUtil,类型检查工具类 harmony-utils 简介与说明 [harmony-utils] 一款功能丰富且极易上手的HarmonyOS工具库,借助众多
    的头像 发表于 06-30 17:35 684次阅读

    Shell脚本入门指南

    Shell 是一块包裹着系统核心的壳,处于操作系统的最外层,与用户直接对话,把用户的输入, 解释给操作系统,然后处理操作系统的输出结果,输出到屏幕给与用户看到结果。
    的头像 发表于 06-03 10:47 1521次阅读
    <b class='flag-5'>Shell</b><b class='flag-5'>脚本</b>入门指南