當前位置: 妍妍網 > 碼農

一個提升你 Shell 指令碼編寫品質的工具,建議大家人手必備的神器!

2024-05-20碼農

戳下方名片 ,關註並 星標

回復「 1024 」獲取 2TB 學習資源!

👉 體系化學習:

特色專欄

/ /

/ /

/ /

/ /

/ /

大家好,我是民工哥!

在 Linux 中,Linux Shell 確實是一個強大的工具,也是一種常見的自動化任務的解決方案。它可以用來自動執行一系列命令,處理文本,進行邏輯判斷等等。

但是初學者在編寫 Shell 指令碼時總會遇到這樣那樣的錯誤,很大程度上會打擊學習的信心,今天,民工哥就給大家分享一款指令碼神器:ShellCheck!

一款 Linux Shell 神器,解決你不會寫指令碼的煩惱

ShellCheck 簡介

ShellCheck 是一個強大的工具,可以幫助解決Linux Shell指令碼編寫中的煩惱。它是一個靜態代分碼析工具,專門針對Shell手稿語言進行檢查。

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

  • 功能特性

  • 錯誤檢測與糾正 :ShellCheck 能夠發現並糾正指令碼中的常見問題、潛在錯誤和最佳實踐不一致。這包括語法錯誤、變量使用錯誤、命令呼叫錯誤、輸入/輸出錯誤等。

  • 程式碼風格 :ShellCheck 它還能就程式碼風格給出建議,幫助提高指令碼的可讀性和一致性。

  • 最佳實踐 :ShellCheck不僅提供錯誤檢測,還會給出最佳實踐建議,如避免使用某些不推薦的命令或結構,推薦使用更安全、可維護的編寫方式。

  • 跨平台支持 :ShellCheck 支持在 Linux、macOS、Windows 等多種作業系統上執行,並支持各種常見的 Shell 直譯器,如 Bash、Dash、Zsh 等。

  • 自訂規則 :ShellCheck 允許使用者定義自訂規則和過濾器,以適應特定計畫或組織的需求。

  • 整合到編輯器中 :ShellCheck 可以整合到各種文字編輯器和IDE中,如Vim、Emacs、Sublime、Atom和VSCode等,實作即時反饋和快速修復。

  • ShellCheck 安裝

    ShellCheck 的安裝方法取決於你使用的Linux發行版。以下是幾種常見發行版的安裝步驟:

    RHEL、CentOS和Fedora系統

    首先需要啟用EPEL Repo,然後才能使用yum安裝ShellCheck。具體步驟如下:

    yum -y install epel-release #啟用EPEL Repo。
    yum install ShellCheck -y #安裝ShellCheck。

    Debian和Ubuntu 系統

    可以直接使用apt命令進行安裝:

    sudo apt install shellcheck #安裝ShellCheck。

    線上使用

    你可以直接在網頁 https://www.shellcheck.net 上貼入你的指令碼,執行檢查。

    使用操作

    安裝完成後,你可以在命令列中使用ShellCheck來檢查Shell指令碼。只需在shellcheck指令後面加上Shell指令碼的名稱即可,例如:

    shellcheck test.sh

    ShellCheck 會顯示一些警告和建議,幫助你改善指令碼的品質和安全性。

    實際例子

    讓我們透過一個具體的例子來演示如何使用ShellCheck。

    假設我們有一個簡單的Shell指令碼example.sh,內容如下:

    #!/bin/bash

    echo"Hello, $1"
    if [ $1 = "World" ]; then
    echo"You said hello to World!"
    fi

    這個指令碼接受一個參數,並打印出"Hello, "加上這個參數。如果參數是"World",則額外打印一條訊息。

    現在,我們想要使用ShellCheck來檢查這個指令碼是否存在問題。

    開啟終端,切換到包含example.sh指令碼的目錄,執行ShellCheck:

    shellcheck example.sh

    ShellCheck會輸出分析結果,可能會包括類似以下的警告和建議:

    In example.sh line 4:
    if [ $1 = "World" ]; then
    ^-- SC2086: Double quote to prevent globbing and word splitting.
    For example:
    if [ "$1" = "World" ]; then

    這條警告指出,在if語句中,變量$1沒有被雙引號包圍,可能會導致一些問題。根據ShellCheck的建議,我們應該修改指令碼如下:

    #!/bin/bash

    echo"Hello, $1"
    if [ "$1" = "World" ]; then
    echo"You said hello to World!"
    fi

    現在,指令碼更加健壯,因為它避免了由於未參照變量可能導致的潛在問題。

    其它

    整合到編輯器中的使用範例(以VSCode為例),如果你使用的是VSCode編輯器,並希望將ShellCheck整合到其中以實作即時反饋,你可以按照以下步驟操作:

  • 在VSCode中開啟Extensions檢視(透過點選左側資訊看板上的方塊圖示或按Ctrl+Shift+X)。

  • 在搜尋框中輸入「shellcheck」並找到對應的擴充套件外掛程式,例如「ShellCheck for Visual Studio Code」。

  • 點選「Install」按鈕安裝外掛程式。

  • 安裝完成後,重新載入VSCode或重新開機編輯器。

  • 開啟你的Shell指令碼檔。VSCode現在應該在後台使用ShellCheck來分析你的指令碼,並在發現問題時顯示警告或錯誤。

  • 這些警告和錯誤通常會在程式碼編輯器的左側資訊看板中透過波浪線或圖示標記出來,你可以點選它們來檢視更多詳細資訊或修復建議。

    另外,如果你使用的是PyCharm這樣的整合式開發環境(IDE),你還可以在PyCharm中安裝ShellCheck外掛程式。這樣,你就可以在IDE中直接檢查Shell指令碼,享受更方便的編碼體驗。

    總結

    總的來說,ShellCheck是一個強大的Shell指令碼開發輔助工具,它可以幫助你更有效地編寫、維護和偵錯Shell指令碼,提高你的工作效率和指令碼品質。

    公眾號讀者專屬技術群

    構建高品質的技術交流社群,歡迎從事後端開發、運維技術進群( 備註崗位,已在技術交流群的請勿重復添加微信好友 )。主要以技術交流、內推、行業探討為主,請文明發言。 廣告人士勿入,切勿輕信私聊,防止被騙。

    掃碼加我好友,拉你進群

    PS:因為公眾號平台更改了推播規則,如果不想錯過內容,記得讀完點一下 在看 ,加個 星標 ,這樣每次新文章推播才會第一時間出現在你的訂閱列表裏。 在看 支持我們吧!