又一款强大好用的Shell脚本项目,程序员必备!

2024-09-11 19:02:09 浏览数 (5)

大家好,我是热爱开源的了不起!

作为一个程序员,肯定经常都要和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都可以运行使用。

快速安装

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

代码语言:javascript复制
# 对于Debian/Ubuntu用户:
sudo apt-get install shellcheck

# 对于MacOS用户:
brew install shellcheck


#windows系统(使用 chocolatey):

choco install shellcheck

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

代码语言:javascript复制
https://www.shellcheck.net/#

项目使用体验

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

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

代码语言:javascript复制
#!/bin/bash

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

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

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

# 列出目录内容
ls -l

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

代码语言:javascript复制
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为

代码语言:javascript复制
#!/bin/bash

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

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

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

# 列出目录内容
ls -l

是不是非常的酷!!

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

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

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

代码语言:javascript复制
Github地址:https://github.com/koalaman/shellcheck

0 人点赞