0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Shell腳本檢查工具ShellCheck介紹

roborobo_0706 ? 來源:WetWan ? 2023-12-27 13:43 ? 次閱讀

ShellCheck是一個(gè)用于bash/sh shell腳本的靜態(tài)分析工具,可以輔助檢查腳本語法錯(cuò)誤,給出建議增強(qiáng)腳本健壯性。

作者創(chuàng)建了一個(gè)在線網(wǎng)站 https://www.shellcheck.net/ ,你可以直接將代碼貼到編輯框中進(jìn)行在線檢查。

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

當(dāng)然你也可以將工具部署到本地計(jì)算機(jī)使用。

本地部署

聯(lián)網(wǎng)安裝

最簡單的方式是使用包管理器安裝?;旧细鞣N平臺(tái)都能直接安裝,比如筆者的archlinux機(jī)器:

$sudopacman-Sshellcheck

安裝成功后,測試腳本

$shellchecktest.sh

離線安裝

在Github上直接下載對(duì)應(yīng)平臺(tái)預(yù)編譯好的可執(zhí)行文件,解壓縮到本地即可使用。

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

代碼編輯器集成

可以根據(jù)官方說明安裝VIM、VSCODE等編輯器插件直接在編譯器中使用。

使用示例

示例一

$cattest.sh
#!/bin/bash

cat$0

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

shellcheck輸出內(nèi)容如下:

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

可以看出,shellcheck使用的關(guān)鍵字是info,說明腳本本身沒有語法錯(cuò)誤,但給出了一些建議使腳本更加健壯。

示例二

再看一個(gè)包含警告和錯(cuò)誤的腳本。

$cattest1.sh
#!/bin/bash

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

$shellchecktest1.sh

shellcheck輸出內(nèi)容如下:

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

首先是warning信息,第3行變量賦值有一個(gè)空格,實(shí)際上是不對(duì)的。

第4行給出error信息,變量與=之間不能有空格,語法錯(cuò)誤。

第5行意圖是輸出兩個(gè)變量的和,但(())內(nèi)變量不需要使用$符合。







審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 計(jì)算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7638

    瀏覽量

    90391
  • Shell
    +關(guān)注

    關(guān)注

    1

    文章

    372

    瀏覽量

    24083
  • vscode
    +關(guān)注

    關(guān)注

    1

    文章

    169

    瀏覽量

    8407

原文標(biāo)題:Shell腳本檢查工具ShellCheck

文章出處:【微信號(hào):ExASIC,微信公眾號(hào):ExASIC】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Shell腳本入門指南

    Shell 是一塊包裹著系統(tǒng)核心的殼,處于操作系統(tǒng)的最外層,與用戶直接對(duì)話,把用戶的輸入, 解釋給操作系統(tǒng),然后處理操作系統(tǒng)的輸出結(jié)果,輸出到屏幕給與用戶看到結(jié)果。
    的頭像 發(fā)表于 06-03 10:47 ?368次閱讀
    <b class='flag-5'>Shell</b><b class='flag-5'>腳本</b>入門指南

    樹莓派新手必看!在樹莓派上編寫和運(yùn)行 Shell 腳本!

    在本教程中,我將討論Shell腳本的基礎(chǔ)知識(shí)、它們的用途以及如何在RaspberryPi上編寫和運(yùn)行Shell腳本。什么是Shell
    的頭像 發(fā)表于 03-25 09:28 ?363次閱讀
    樹莓派新手必看!在樹莓派上編寫和運(yùn)行 <b class='flag-5'>Shell</b> <b class='flag-5'>腳本</b>!

    腳本美化高手之輕松實(shí)現(xiàn)文本顏色和背景定制的酷炫Shell技巧

    shell腳本中 echo 和 printf 都可以輸出內(nèi)容。示例1: echo -e "?33[43;35m david use echo say Hello World ?33[0m
    的頭像 發(fā)表于 12-06 10:38 ?657次閱讀
    <b class='flag-5'>腳本</b>美化高手之輕松實(shí)現(xiàn)文本顏色和背景定制的酷炫<b class='flag-5'>Shell</b>技巧

    Linux從零到精通:最簡單的Shell腳本入門教程

    通過簡單的命令和腳本,實(shí)現(xiàn)對(duì)系統(tǒng)的靈活控制和自動(dòng)化管理。 shell腳本前言 shell腳本入門 she
    的頭像 發(fā)表于 12-05 09:56 ?1443次閱讀
    Linux從零到精通:最簡單的<b class='flag-5'>Shell</b><b class='flag-5'>腳本</b>入門教程

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-shell腳本編寫之函數(shù)

    shell中的函數(shù)定義比較簡單,定義函數(shù)名可以沒有類型,函數(shù)返回值可有可無,如果有返回值,必須返回整數(shù)n(0~255)。同時(shí),函數(shù)的定義必須放在shell腳本的開頭部分,只有函數(shù)被shell
    發(fā)表于 09-23 10:18

    飛凌嵌入式ElfBoard ELF 1板卡-shell腳本編寫之函數(shù)

    shell中的函數(shù)定義比較簡單,定義函數(shù)名可以沒有類型,函數(shù)返回值可有可無,如果有返回值,必須返回整數(shù)n(0~255)。同時(shí),函數(shù)的定義必須放在shell腳本的開頭部分,只有函數(shù)被shell
    發(fā)表于 09-06 10:33

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-shell腳本編寫之四則運(yùn)算

    shell程序默認(rèn)支持整數(shù)加、減、乘、除、求余的運(yùn)算。 1、使用$(())方式進(jìn)行運(yùn)算 例如計(jì)算2+3,使用$((2+3))。 我在腳本中加入這幾種運(yùn)算進(jìn)行測試: 執(zhí)行腳本后結(jié)果如下: 2
    發(fā)表于 09-04 10:08

    飛凌嵌入式ElfBoard ELF 1板卡-shell腳本編寫之四則運(yùn)算

    shell程序默認(rèn)支持整數(shù)加、減、乘、除、求余的運(yùn)算。 1、使用$(())方式進(jìn)行運(yùn)算 例如計(jì)算2+3,使用$((2+3))。 我在腳本中加入這幾種運(yùn)算進(jìn)行測試: 執(zhí)行腳本后結(jié)果如下: 2
    發(fā)表于 09-03 14:30

    shell腳本執(zhí)行的三種方式及區(qū)別

    在Linux系統(tǒng)中,Shell腳本是一種非常實(shí)用的工具,用于自動(dòng)化執(zhí)行一系列命令。Shell腳本可以大大提高工作效率,簡化復(fù)雜的任務(wù)。在這篇
    的頭像 發(fā)表于 08-30 15:24 ?2118次閱讀

    執(zhí)行shell腳本的方式包括什么

    執(zhí)行Shell腳本的方式有很多種,以下是一些常見的方法: 直接運(yùn)行腳本文件 在命令行中,可以直接使用腳本文件的路徑來運(yùn)行腳本。例如: ./s
    的頭像 發(fā)表于 08-30 15:17 ?697次閱讀

    shell具有的功能和特點(diǎn)

    Shell 是一個(gè)命令行解釋器,用于與操作系統(tǒng)進(jìn)行交互。它提供了一種方便的方式來執(zhí)行命令、管理文件和目錄、運(yùn)行程序等。以下是 Shell 的功能和特點(diǎn)的介紹: 命令執(zhí)行 Shell
    的頭像 發(fā)表于 08-30 14:48 ?1269次閱讀

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-shell腳本編寫之本地腳本的編寫和執(zhí)行

    ,再次查看var變量的值,可以看到成功輸出235,該方式執(zhí)行腳本后的變量,沒有釋放,所以我們經(jīng)常使用source來配置shell環(huán)境變量,后邊講開發(fā)板交叉編譯工具設(shè)置時(shí)會(huì)使用到。
    發(fā)表于 08-29 10:51

    shell腳本編寫之本地腳本的編寫和執(zhí)行

    的使用可以參考下一節(jié))將變量值輸出進(jìn)行查看,如下圖,可以看到?jīng)]有輸出var的值;然后再使用source或. 進(jìn)行腳本執(zhí)行,再次查看var變量的值,可以看到成功輸出235,該方式執(zhí)行腳本后的變量,沒有釋放,所以我們經(jīng)常使用source來配置
    發(fā)表于 08-28 09:36

    嵌入式學(xué)習(xí)-shell介紹

    輸出執(zhí)行結(jié)果呈現(xiàn)給用戶;同時(shí)Shell也是一種解釋性的編程語言或者腳本語言,開發(fā)容易可以在短時(shí)間內(nèi)完成功能強(qiáng)大又好用的腳本,可以在不同的系統(tǒng)上移植非常方便。二、Shell的特性不同的發(fā)
    發(fā)表于 08-16 09:13

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

    輸出執(zhí)行結(jié)果呈現(xiàn)給用戶;同時(shí)Shell也是一種解釋性的編程語言或者腳本語言,開發(fā)容易可以在短時(shí)間內(nèi)完成功能強(qiáng)大又好用的腳本,可以在不同的系統(tǒng)上移植非常方便。二、Shell的特性不同的發(fā)
    發(fā)表于 08-15 09:28

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品