又一款强大好用的Shell脚本项目,支持Bash,Sh、Dash、Ksh等,甚至可以在编辑器中直接用,程序员必备!(附源码)

news2024/11/16 8:28:56

作为一个程序员,肯定经常都要和shell脚本打交道,Shell脚本可以帮我们自动化各种任务,但也经常有格式错误、拼写错误、逻辑错误等等麻烦,而且它不会告诉你错在哪里!

今天就给大家分享一个超级实用的开源项目 - ShellCheck,好比我们在漆黑的房间里找钥匙,而ShellCheck就是我们的手电筒。

图片

简介

ShellCheck 是一个开源的静态分析工具,专门给shell脚本号号脉,找出其中的问题,比如语法错误、不规范的编码习惯、甚至是安全漏洞。

它不仅支持Bash,还支持Sh、Dash、Ksh等等。你可以用它来检查代码,也可以集成到CI/CD流水线中,甚至可以在编辑器中直接用。

它就像一位严格的老师,让我们的脚本远离错误和不良习惯。

图片

主要的功能特色有:

  • 多shell支持:不管是 Bash 还是其他 shell 脚本,它都能帮你检查。

  • 静态分析:不用运行脚本,它就能帮你抓出隐藏在角落里的小问题。

  • 具体错误提示:它会告诉你问题具体出在哪一行,并给出详细解释和修正建议。

  • CI/CD集成:可以把ShellCheck集成到你的代码提交流程中,避免低级错误流入生产环境。

  • 编辑器支持:支持很多编辑器插件支持,可以在VSCode、Sublime、Vim、Emacs中直接用。

  • 多平台支持:Linux、macOS、Windows都可以运行使用。

图片

快速安装

安装方法有很多,比较简单的方式是使用包管理器,如:

# 对于Debian/Ubuntu用户:
sudo apt-get install shellcheck

# 对于MacOS用户:
brew install shellcheck


#windows系统(使用 chocolatey):

choco install shellcheck

或者官方提供了一个在线的demo供我们快速体验:

https://www.shellcheck.net/#

项目使用体验

安装好后我们就可以开始使用了。

假设我们有一个简单的脚本example.sh

#!/bin/bash

# 打印用户输入
echo "User input is: $1"

# 创建目录,如果不存在
mkdir /tmp/myfolder

# 切换到新目录
cd /tmp/myfolder

# 列出目录内容
ls -l

用ShellCheck检查一下,它可能会告诉你:

图片

Line 10:
cd /tmp/myfolder
^-- SC2164 (warning): Use 'cd ... || exit' or 'cd ... || return' in case cd fails.

Did you mean: (apply this, apply all SC2164)
cd /tmp/myfolder || exit

$

直接指出了shell中存在的问题,并给了修改建议。

最后修改的shell为

#!/bin/bash

# 打印用户输入
echo "User input is: $1"

# 创建目录,如果不存在
mkdir /tmp/myfolder

# 切换到新目录
cd /tmp/myfolder || exit

# 列出目录内容
ls -l

图片

是不是非常的酷!!

当然,ShellCheck 也不是能够识别所有的错误,主要有如错误引用、错误的条件声明等等,大家可以自行去项目主页进行查看。

图片

图片

体验下来,不得不说,ShellCheck确实一个不可多得的Shell脚本开发辅助工具,它能够帮助你更有效地编写、维护和调试Shell脚本,提高我们的工作效率和脚本质量。

关于该项目的更多细节,感兴趣的可以到项目地址查看:

Github地址:https://github.com/koalaman/shellcheck

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2126784.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【笔记】自动驾驶预测与决策规划_Part2_基于模型的预测方法

基于模型的预测方法 0. 前言1. 预测系统概述2. 定速度预测3.定曲率预测4. 短时预测与长时预测5. 基于手工特征的意图预测6: 基于模型的轨迹预测 0. 前言 本文主要记录课程《自动驾驶预测与决策技术》的学习过程,难免会有很多纰漏,感谢指正。 课程链接&am…

C++那些事之精选68道面试题

有小伙伴问我要一些C的学习题目/面试题目,我这里总结了一下分享给大家,大家可以自行去回答下面的问题,看看可以解答多少个。 注:懒人版附代码与答案会在文末星球详细讲解。 大纲 基础概念面向对象编程STL(标准模板库&a…

如何加入PTP硬件时钟的组播组

首先要先判断当前机器是否能收到PTP时钟源发出的组播包 timeout 100 tcpdump -nni bond0 port 319 or port 320 -el -c 100抓包能抓到以下包信息,即能正常收到PTP时钟源发出的组播信息。其中的224.0.1.129即为组播地址 第一步正常了后,开始加入组播源 ip…

jmeter元件+取样器(十)

一、元件与组件 二、作用域 由于查看结果树与京东和百度是平级关系,所以均生效。 三、线程属性-取样器 1、请求方法(在参数和消息体数据里填写请求数据,其结果可能会出现在URL或者请求体中,其请求头类型可能为表单或json格 &am…

解密Fiddler,从零开始轻松掌握弱网测试技巧!

使用Fiddler对手机App应用进行抓包,可以对App接口进行测试,也可以了解App传输中流量使用及请求响应情况,从而测试数据传输过程中流量使用的是否合理。这篇文章就带大家了解一下抓包过程。 01、Fiddler设置 1、启动Fiddler->Tools->Fid…

谷歌账号登录的时候需要手机验证,但是验证的手机号码已经注销了怎么办?

在服务的过程中,时不时会遇到有朋友问,自己的谷歌账号在登录的时候需要验证,这个账号绑定到的手机号已经注销了,怎么办?账号还能找回来吗? 今天GG账号服务就来为大家解答这个问题,让大家少走弯…

GEE Shapefile 格式转换 GeoJSON

在地理信息系统(GIS)领域,数据格式之间的转换是一项常见的需求。例如,将 Shapefile 格式转换为 GeoJSON 格式,对于上传数据到 Google Earth Engine (GEE) 尤其有用。本文将通过一个 Python 脚本的示例,实现…

软件无线电1-MATLAB实现FM调制解调

1、MATLAB读取语音文件 准备一段wav的语音文件,我用笔记本自带的录音机录制了一段自己的语音“爱福皮的姐.wav“,MATLAB读取语音文件,并获取采样率信息。 clc; clear all; %% ***************read file************************************…

【困难】 猿人学web第一届 第18题 jsvmp 洞察先机

文章目录 数据接口分析还原加密参数插桩调试分析日志插桩补充 python 代码 数据接口分析 数据接口 https://match.yuanrenxue.cn/match/18data 请求参数 {page: 页码, t: 时间戳, v: 加密值} 请求第一页不需要携带 t, v 参数 cookie 只需要携带 sessionid 只要 还原加密字段…

深入理解Java反射技术及其应用

什么是反射技术? Java反射机制是一种强大的特性,它允许程序在运行时动态加载类并获取类或对象的属性和方法。其核心在于JVM通过获得class对象进行反编译,从而获取对象的各种信息。 反射机制的基本特点 动态性 Java是一种先编译后运行的语言…

【电子通识】规格书上的%FS和%RD具体指什么?

在仪器仪表类的手册上,常见的精度表达规格显示方式:%FS 和%RD 究竟如何解读呢? 术语解说 %RD(Reading):用于表示对比显示值(读值)存在多少(%)的误差 %FS(Full Scale):用于表示对比全量程存在多少(%)的误差 %SP(Set Poi…

基于vue框架的城市体育运动交流平台15s43(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:用户,赛事类型,近期赛事,比赛报名,器材类型,器材信息,自由约战,运动队伍 开题报告内容 基于Vue框架的城市体育运动交流平台开题报告 一、项目背景与意义 随着城市化进程的加速和居民健康意识的提升,城市体育运动已成为现代…

思维导图神器!四款高效工具助你职场逆袭

在如今这个信息爆炸的时代,如何高效地整理和呈现思维,成为了一个重要的能力;思维导图作为一种有效的思维工具,被广泛应用于工作、学习和生活中;今天,我将为大家介绍四款常用的思维导图软件并分享一下它们的…

win10任务栏透明如何调整?——详解Windows任务栏设置与优化技巧

在这个数字化时代,电脑已经成为我们日常办公和生活中的。关于win10任务栏透明的设置方法,身边很多同事都在咨询。 本文就来简单介绍下关于电脑任务栏个性化设置的方法,毕竟任务栏影响着用户体验。这时,一款优秀的任务栏优化工具就…

模拟实现string类: clear函数、流提取(<<)和流插入(>>)运算符重载、>、<、==、<=、>=、!=的运算符重载、赋值运算符(=)重载等的介绍

文章目录 前言一、 clear函数二、流提取(<<)和流插入(>>)运算符重载三、 >、<、、<、>、!的运算符重载四、赋值运算符&#xff08;&#xff09;重载总结 前言 模拟实现string类: clear函数、流提取(<<)和流插入(>>)运算符重载、>、<…

[论文笔记]ChatQA: Surpassing GPT-4 on Conversational QA and RAG

引言 今天来看一下上篇论文笔记中反复介绍的 ChatQA: Surpassing GPT-4 on Conversational QA and RAG。 为了简单&#xff0c;下文中以翻译的口吻记录&#xff0c;比如替换"作者"为"我们"。 我们介绍了 ChatQA&#xff0c;这是一个模型套件&#xff0c;一…

机器学习和深度学习的常见概念总结(面试用,多原创图和公式)

目录 使用说明一、未分类损失函数&#xff08;Loss Function&#xff09;1. **损失函数的作用**2. **常见的损失函数**2.1. **均方误差&#xff08;MSE, Mean Squared Error&#xff09;**2.2. **均方根误差&#xff08;RMSE, Root Mean Squared Error&#xff09;**2.3. **平均…

1. 运动控制指令概要(omron 机器自动化控制器)

机器自动化控制器——第一章 运动控制指令概要 1-1 运动控制指令PLCopen运动控制用功能块运动控制指令概要▶ 运动控制指令的种类▶ 状态变化▶ 运动控制指令的启动和状态▶ 异常处理▶ 执行运动控制指令时输入变量的变更(指令重启)▶ 通过选择缓存模式执行指令多重启动▶ 通过…

四川锦程消费金融有限责任公司2024年(第一批次)催收机构选型入库采购公告

四川锦程消费金融有限责任公司2024年&#xff08;第一批次&#xff09;催收机构选型入库采购公告 根据需要&#xff0c; 四川锦程消费金融有限责任公司决定对外公 开选型采购催收代理合作的催收机构&#xff0c;欢迎符合条件的催收 机构参与采购。具体公告如下&#xff1a; 一…

Redisson分布式锁实现及原理详解

随着技术快速发展&#xff0c;数据规模增大&#xff0c;分布式系统越来越普及&#xff0c;一个应用往往会部署在多台机器上&#xff08;多节点&#xff09;&#xff0c;在有些场景中&#xff0c;为了保证数据不重复&#xff0c;要求在同一时刻&#xff0c;同一任务只在一个节点…